[英]ASP.Net API DateTime ISO8601 date value being parsed as default date (01/01/0001 00:00:00) in production & Azure
當我們的 API 解析帖子值時,我看到了一個問題。 這似乎只發生在實時環境中,因此在測試期間被遺漏了。
此 class 代表發布到 API 的內容:
public class LoginHistorySearch
{
public DateTime StartDateUtc { get; set; }
public DateTime EndDateUtc { get; set; }
}
切入核心問題,這里是作為響應返回的解析日期:
[Authorize]
[Route("Reports/LoginsByPeriod")]
public class LoginsController : ApiController
{
public HttpResponseMessage Post([FromBody] LoginHistorySearch search) {
return Request.CreateErrorResponse(HttpStatusCode.OK, search.StartDateUtc.ToString());
}
}
如果我發布這些數據(目前使用 APITester.com):
{
"StartDateUtc": "2018-01-01T00:00:00Z",
"EndDateUtc": "2020-01-01T00:00:00Z"
}
我得到這個返回:
Response Body {"Message":"01/01/0001 00:00:00"}
更奇怪的是,如果我使用 Postman 發布,那么我會看到 IIS 404 錯誤。 誰能解釋一下?
在仔細檢查每個設置后,發現Content-Type
header 在為實時站點創建POST
時被丟棄。
手動添加它會產生所需的 output 並觸發正確的解析:
Content-Type: application/json
(血壓恢復正常率)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.