我正在使用WCF Web API Preview 6及其内置的Test Client来通过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)
我还在过滤问题上向WCF Web API codeplex站点提交了this错误报告。然而,这是两个多星期前,并没有任何回应。
经过数小时的测试和调试后,我对这个选项用完了!因此,如果有人在那里可以提供一些有用的提示,那将非常感激。
答案 0 :(得分:3)
这不是Web API问题,而是Microsoft序列化问题。 XmlSerializer不处理DateTimeOffset。我相信它与TimeSpan有同样的问题。
只需在对象上实现IXMLSerializable并自行处理。