【发布时间】:2019-09-30 10:54:31
【问题描述】:
我注意到DateTime 对象对于 QueryString 和 Body 之间的相同值的序列化方式不同。基础值仍然是相同的正确值,但是序列化的 QueryString 的 DateTimeKind 是 Local,而 Body 是 Utc。
端点
[HttpPost]
public ActionResult Post([FromQuery] DateTime queryDate, [FromBody] DateTime bodyDate)
{
var result = new
{
queryDateKind = queryDate.Kind.ToString(),
bodyDateKind = bodyDate.Kind.ToString()
};
return new ObjectResult(result);
}
请求
POST /api/values?queryDate=2019-05-12T00%3A00%3A00.000Z HTTP/1.1
Host: localhost:5000
Content-Type: application/json
cache-control: no-cache
"2019-05-12T00:00:00.000Z"
响应
{
"queryDateKind": "Local",
"bodyDateKind": "Utc"
}
知道这是为什么吗?是否有可能始终序列化为相同的DateTimeKind 的设置?
最好我不想到处使用ToUniversalTime() 或ToLocalTime(),也不想使用任何自定义IModelBinder。
【问题讨论】:
标签: c# asp.net-core