[关闭]
@Aiti 2020-06-23T10:15:34.000000Z 字数 1364 阅读 214

WebApi的那些事

WebApi


1. 前后端分离后时间差8小时

原因:前端调用API时传入的国际(UTC)时间,时间格式参数为:2000-06-26T16:00:00Z,而中国地区的比国际时间少8个小时。
解决:在Controller中如果请求的参数类型为时间类型的话,DateTime.Kind会是UTC,中国地区的会减少8个小时,所以需要调整一下WebApiConfig,将其设置为Local本地时间。对应的json序列化缺少设置就会少八小时。

(1).通过API自带的ResultFul请求模式序列化

  1. //json 序列化设置
  2. GlobalConfiguration.Configuration.Formatters
  3. .JsonFormatter.SerializerSettings = new Newtonsoft.Json.JsonSerializerSettings()
  4. {
  5. NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore, //设置忽略值为 null 的属性
  6. DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Local,
  7. //DateFormatString="yyyy-MM-dd HH:mm:ss",
  8. //DateFormatHandling=Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat,
  9. };

(2)自定义的json序列化

  1. //JSON序列化设置
  2. JsonSerializerSettings setting = new JsonSerializerSettings();
  3. JsonConvert.DefaultSettings = new Func<JsonSerializerSettings>(() =>
  4. {
  5. //日期类型默认格式化处理
  6. setting.DateTimeZoneHandling = DateTimeZoneHandling.Local;
  7. //空值处理
  8. setting.NullValueHandling = NullValueHandling.Ignore;
  9. return setting;
  10. });

2.前端API请求上传图片报错401,实体过大。

遇到问题:APP请求上传带图片,报错,不带图片上传成功。图片过大也报错。但是小提琴可以上传图片成功。
1.照下面的节点进行 添加 10MB大小

  1. <system.webServer>
  2. <serverRuntime uploadReadAheadSize="10485760" />
  3. </system.webServer>

2.设置在IIS->配置配置器->system.webServer->serverRuntime->uploadReadAheadSize

3.本地打包测试APP总登录过期

因为本地IIS没有证书,正式网备案了,有证书,所以本地使用debug发布测试,不要使用Release。
且前端APP分了两个板块,01Login和02Main连接的URL都要对应的服务地址;然后01Login用HBuilder启动;02Main打包放到对应的服务根目录“ModulesDownload”文件下,并修改根目录appversion对应的版本

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注