我目前正在从.net MVC5网站调用rest api,并使用AutoRest(0.17.3)从其余的api swagger.json生成代码。
这一切都运行得很好但是当我使用put方法时,它会将其中一个字段的日期时间改变一个小时。我在自动生成的代码中找到了导致问题的位置:
_requestContent = Microsoft.Rest.Serialization.SafeJsonConvert.SerializeObject(value, this.SerializationSettings);
似乎正在改变将对象序列化为Json的时间。
我已经在web.config中设置了文化,但我们仍然遇到同样的问题。
有谁知道如何解决这个问题?如果可能全局,那么我们不必更改自动生成的代码。否则,我们必须记住每次重新生成代码时都要进行此更改。
非常感谢
安迪
答案 0 :(得分: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\""