1

我有一個Web Api ASP.net CORE 1 MVC,C#。我通過使用Angular(版本1)編寫的客戶端應用程序調用web api。Json日期被序列化爲錯誤的格式

我有一個POST方法,它有一個日期作爲屬性的模型。

在我的開發環境中,當我發佈到方法中時,日期過得很好,模型有效,日期格式爲我期望的格式「dd/MM/yyyy」。但是,當我將代碼移到我的測試服務器時,日期通過「MM/dd/yyyy」。實際上,在測試服務器上,日期來自代碼「0001-01-01T00:00:00」。

我可以從記錄網絡流量中看到從客戶端應用發送的日期是正確的。當它到達該方法時,它已經被.net序列化爲錯誤的格式,而模型狀態是無效的。

有沒有人有過這個問題?它非常新,目前很難在CORE 1上獲得良好的文檔。

我試着在我startup.cs此代碼爲我的網頁API:

services.AddMvc().AddJsonOptions(opt => 
    { 
     opt.SerializerSettings.DateFormatString = "dd/MM/yyyy"; 
    }); 

但它並不能幫助的事情。

+0

請仔細閱讀http://stackoverflow.com/help /標記常見問題知道如何正確使用標籤並避免強制標籤進入問題標題,最後不要「謝謝」​​,請在使用前閱讀[tag:asp.net-mvc6]的描述**! http://stackoverflow.com/tags/asp.net-mvc6/info – Tseng

+0

如果這個標籤適用於舊版webstack的'潛在'未來版本,那麼它現在不應該公開訪問。 – BenM

+1

@BenM:已經有它的請求http://meta.stackoverflow.com/questions/317858/burninate-mvc6和http://meta.stackoverflow.com/questions/322140/burinate-asp-net-core -mvc6-and-asp-net-mvc6和http://meta.stackoverflow.com/questions/315270/asp-net-5-ef7-tags-incorrectly-synonymized,但似乎沒有人真正關心和製作asp.net- mvc6是asp.net-core-mvc的同義詞,它只是一種蠕蟲,因爲仍然有可能出現一個真正的MVC6,它基於傳統框架 – Tseng

回答

1

通常爲了避免混淆本地化日期的序列化,建議以明確的格式進行序列化。在這種情況下,它會更好格式化的國際ISO格式的日期:

「YYYY-MM-DD」,

參見:http://www.iso.org/iso/home/standards/iso8601.htm

+0

好吧 - 這是一個公平點,我一定會留意未來,但我會現在我需要解決這個困境:-( –

+0

我可以建議的唯一的事情就是你改變角度應用以ISO格式發佈.net核心理解ISO格式並且應該正確地反序列化。 – Slicc