欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

.NET FrameWork 转 .NET Core遇到的问题

程序员文章站 2022-03-09 21:43:45
...

声明: 此处笔记并不通用,供个人参考

一、使用ConfigurationHelper时

ConfigurationHelper.AppSettings(“key”,false)
前置条件:
1、添加 DotNet.Utilities;
2、添加 webConfig中添加
3、引用 Framework.Apollo.Client

二、类库转换

System.Web.Mvc ==> Microsoft.AspNetCore.Mvc(.NET Core)

三、js的引用(不属于转换时的问题)

客户端会缓存这些css或js文件,因此每次升级了js或css文件后,改变版本号,客户端浏览器就会重新下载新的js或css文件 ,刷性缓存的作用。大家可能有时候发现修改了样式或者js,刷新的时候不变,就是客户端缓存了css或者js文件,因此加上参数还是有好处的!
缓存一小时

<script src="~/js/DataCenter/DataReport/[email protected]("yyyyMMddHH")"></script>

四、控制器返回给前端的json首字母大小问题

方法一 全局修改

//注册mvc服务
services.AddMvc()
      //全局配置Json序列化处理
      .AddJsonOptions(p=>{
      p.SerializerSettings.DateFormatHandling = DateFormatHandling.MicrosoftDateFormat;//指定序列化时间格式模式
      p.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";//指定时间格式化
      p.SerializerSettings.ContractResolver = new DefaultContractResolver();//取消Json序列化的第一个字母
      p.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;//忽略循环引用
});

方法二 局部修改

	JsonSerializerSettings settings = new JsonSerializerSettings();
	//EF Core中默认为驼峰样式序列化处理key
	//settings.ContractResolver = new CamelCasePropertyNamesContractResolver()
	//使用默认方式,不更改元数据的key的大小写
	settings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver();
    return Json(result,settings);

五、URL不区分大小写

六、控制器中

	[Route("api/[controller]/[action]")]
	[ApiController] //去掉后不报一个错,是http方法只允许一个实体参数

七、查询问题

.NET FrameWork MVC中 Post过来的参数有多个实体类,可以接收
.NET Core Post过来的参数有多个实体类,无法接收

八、关键代码

	var reader = new StreamReader(Request.Body);
	var contentFromBody = reader.ReadToEnd();
	dynamic dynamicStr = JsonConvert.DeserializeObject(contentFromBody);//get 数据
	var te1 = dynamicStr["sort"].Value;
	var te11 = dynamicStr["Depart_Leader"].Value;
	var te12 = dynamicStr["Depart_Code"].Value;
	Request.Body.Position = 0;
	var reader2 = new StreamReader(Request.Body);
	var contentFromBody2 = reader2.ReadToEnd();
	PageModel entity = JsonConvert.DeserializeObject<PageModel>(contentFromBody);

九、区别

apiParams = "dateFrom={0}&amp;dateTo={1}&amp;pcode={2}&amp;pgcode={3}&amp;gcode={4}&amp;pageIndex={5}&amp;pageSize={6}&amp;gname={7}&amp;pgname={8}&amp;pname={9}&amp;depCode={10}&amp;depLeader={11}&amp;gpLeader={12}&amp;sort={13}&amp;direction={14}&amp;devname={15}"

传统的可以 string.Format(apiParams,XXXX) ==> dateFrom={0}&dateTo={1}&pcode={2}&pgcode={3}&gcode={4}&pageIndex={5}&pageSize={6}&gname={7}&pgname={8}&pname={9}&depCode={10}&depLeader={11}&gpLeader={12}&sort={13}&direction={14}&devname={15}

.Net Core string.Format(apiParams,XXXX) ==> 转换不成& 必须修改apiParams 的参数

十、时间

System.Web.Mvc中 Json( )时间是时间戳的格式
Microsoft.AspNetCore.Mvc 中 Json() 序列化出来的是世界标准时间