假设我有这个控制器动作:
public HttpResponseMessage AddUser([FromBody] UserInfo info){...}
UserInfo类有2个属性:
Public string UserName { get; set;}
Public DateTimeOffset AddedOn { get; set;}
并且以下请求中包含DateTime字符串:
POST http://webapiserver:1234/users/add HTTP/1.1
Content-Type: application/json
{
"UserName": "user1",
"AddedOn": "2014-04-02T13:00:00"
}
AddedOn的值被反序列化为DateTimeOffset对象“4/2/0001 1:00:00 PM -05:00” . 请注意,添加了偏移量“-05:00” - 这是Web API服务器的时区 .
The question: 无论如何我可以导致DateTimeOffset的反序列化为区域未指定的时间字符串使用不同的时区偏移量而不是默认值,即Web服务器的时区偏移量?
注意:您可能会问:为什么要使用DateTimeOffset?我必须这样做才能兑现包含时区偏移的请求 . 但是,我们必须处理具有未指定时间的请求 .
您可能还会问:当前默认偏移量有什么问题,即Web API服务器的时区偏移量?这是因为我们想要处理数据库和Web服务器位于不同时区的情况 . 所以我需要反序列化来使用数据库的时区,而不是Web服务器的时区 .
我知道可以选择使用自定义媒体类型格式化程序 . 但是我希望有一种更简单的方法,因为我需要的是序列化器在反序列化DateTimeOffset数据时使用特定的时区偏移量 . 任何建议将不胜感激 .