使用带有WCF和JSON的C#中的DateTime 0001-01-01时出错

时间:2013-11-12 09:33:23

标签: c# json wcf datetime

我试图从返回JSON对象的WCF服务发送DateTime对象。除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();

除了没有从服务返回任何数据外,什么都没有崩溃。为什么会这样?

2 个答案:

答案 0 :(得分:0)

我想这是因为以下原因:DateTime's representation in milliseconds? 您无法将日期时间设置为此值。

答案 1 :(得分:0)

WCF和JSON在小日期方面遇到麻烦。 (1/1/1000之前的所有内容)都可以解决这个问题。

此外,默认日期时间日期为1/1/1。这个值在WCF和JSON中用NULL表示,NULL处理将导致 No Result ,这是你的代码出错的部分我认为......

输入小日期时,我建议您尝试以下代码行:

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