2

我目前正在从 .net MVC5 网站调用 rest api,并使用 AutoRest (0.17.3) 从 rest api swagger.json 生成代码。

一切正常,但是当我使用 put 方法时,它会将其中一个字段的日期时间更改一小时。我在自动生成的代码中找到了导致问题的位置:

   _requestContent = Microsoft.Rest.Serialization.SafeJsonConvert.SerializeObject(value, this.SerializationSettings);

它似乎正在改变将对象序列化为 Json 的时间。

我已经在 web.config 中设置了文化,但我们仍然遇到同样的问题。

有谁知道如何解决这个问题?如果可能在全局范围内,那么我们不必更改自动生成的代码。否则,我们必须记住每次重新生成代码时都要进行此更改。

非常感谢

安迪

4

1 回答 1

0

我相信您的数据时间值指定为本地时间(具有Kind等于 的属性DateTimeKind.Local)。这就是为什么这个值会随着时间的变化而序列化。如果将此属性更改为DateTimeKind.Utc,则数据值将被序列化而不更改。参见示例:

var local = DateTime.Now;
var utc = DateTime.SpecifyKind(local, DateTimeKind.Utc);

var _requestContentLocal = Microsoft.Rest.Serialization.SafeJsonConvert.SerializeObject(local);
var _requestContentUTC = Microsoft.Rest.Serialization.SafeJsonConvert.SerializeObject(utc);

_requestContentLocal    "\"2017-06-29T18:19:32.6704837+03:00\"" 
_requestContentUTC  "\"2017-06-29T18:19:32.6704837Z\""  
于 2017-06-29T15:20:57.653 回答