簡體   English   中英

在帶有WCF和JSON的C#中使用DateTime 0001-01-01時出錯

[英]Error using DateTime 0001-01-01 in C# with WCF and JSON

我試圖從WCF服務發送DateTime對象,該服務返回JSON對象。 除0001-01-01外,所有日期均正常。 服務無法對此進行序列化,為什么會這樣?

這些工作正常:

return DateTime.now;
return new DateTime(1,1,2);

但是這些不起作用:

return new DateTime();
return new DateTime(0);
return new DateTime(1,1,1);

我的介面

    [OperationContract]
    [WebInvoke(Method = "GET",
       ResponseFormat = WebMessageFormat.Json,
       UriTemplate = "/GetTest")]
    DateTime GetTest();

沒有崩潰,除了沒有從服務返回任何數據。 為什么會這樣?

我猜這是由於以下原因: DateTime的毫秒表示形式? 您不能將日期時間設置為這樣的值。

WCF和JSON的日期比較短。 (1/1/1000之前的所有內容)都可以解決此問題。

另外,默認的日期時間日期將是1/1/1。 該值由WCF和JSON中的NULL表示,並且NULL處理將導致完全沒有結果 ,這是我認為您的代碼出錯的部分...

輸入小日期時,我建議您嘗試以下代碼行:

var date = new DateTime(1,1,1,0,0,0,DateTimeKind.Utc);

(資源http://www.west-wind.com/weblog/posts/2008/Jun/23/Crashing-WCF-35-JSON-Services-with-DateTimeMinValue

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM