0

我试图从返回 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();

没有任何崩溃,除了服务没有返回数据。为什么呢?

4

2 回答 2

0

我猜这是因为以下原因:DateTime 的以毫秒为单位的表示? 您不能将 datetime 设置为这样的值。

于 2013-11-12T09:39:29.350 回答
0

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

于 2013-11-12T09:59:07.133 回答