我正在使用 WCF Web API Preview 6 及其内置测试客户端来通过 Id 请求资源。该对象返回其所有数据,但“CreateDate”和“LastModifiedDate”属性除外,这些属性的类型为 DateTimeOffset
并且为空。我尝试通过调用 DateTimeOffset.UtcNow
和 DateTimeOffset.Now
手动设置值,尽管这些值是在对象上设置的,但它们永远不会到达对象中的另一端回应。
我还通过将属性类型更改为 DateTime
并使用 DateTime.Now
手动设置其值来对此进行了测试,一切正常,我得到了看起来像DateTimeOffset 值。
<CreateDate>2011-12-13T16:15:47.4269538+00:00</CreateDate>
<LastModifiedDate>2011-12-13T16:15:47.4269538+00:00</LastModifiedDate>
有谁知道在预览版 6 中使用 DateTimeOffset
类型是否存在问题,或者是我做错了什么?我在使用 oData 过滤字段时遇到了类似的问题(请参阅 SO question )
我还提交了this向 WCF Web API Codeplex 站点报告有关过滤问题的错误。然而,这已经是两个多星期前的事了,还没有任何回应。
经过几个小时的测试和调试,我已经没有这个选项了!因此,如果有人能为我提供一些有用的提示,我将不胜感激。
最佳答案
这不是 Web API 问题,而是 Microsoft 序列化问题。 XmlSerializer 不处理 DateTimeOffset。我相信 TimeSpan 也有同样的问题。
只需在您的对象上实现 IXMLSerialized 并自行处理即可。
关于WCF Web API DateTimeOffset 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8492583/