WCF Web服务中止

时间:2014-08-07 06:02:25

标签: c# asp.net ajax web-services wcf

我跟随Webservice返回JSON:

    [OperationContract]
    [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json)]
    public SomeResultClass AddObject(InputObject objInputObject)
    {
        IO objIO = new IO();
        return objIO.AddObject(objInputObject);
    }
客户端

我正在调用webservice:

   var Data=new Object();
   Data.objInputObject=new Object();
   //Add fields
    $.ajax({
            type: "POST",
            data: JSON.stringify(Data),
            dataType: "json",
            async:false,
            url: "../Webservice/WSService.svc/AddObject",
            contentType: "application/json",
            success: function (result) {
               show_Result(result.AddObjectResult);
            },
            error: function (msg) {
               show_Error(msg);
            }
        });

但是ajax调用总是被中止....如果我在webservice中添加断点..它被击中两次.... ?? .... webservice代码似乎正确执行..但状态在浏览器中止?

3 个答案:

答案 0 :(得分:1)

找到解决方案......似乎WCF不允许DateTime空值... 我有public DateTime SortDateTime { get; set; }未分配任何值..

刚刚更改了模型类构造函数来初始化它:

public class InputObject 
{
    public InputObject ()
    {
        SortDateTime = DateTime.Now;
    }
    //Fields
    public DateTime SortDateTime { get; set; }
}

答案 1 :(得分:0)

我遇到了同样的问题,因为我从服务器返回了大量记录,我将以下行添加到我的wcf配置文件中并且它有效。

<system.web>
    <httpRuntime maxRequestLength ="262144" executionTimeout="103600"/>
</system.web>

希望它也适合你。请尝试。

答案 2 :(得分:0)

序列化时,问题或错误在Javascript对象表示法中;不在WCF。

"•The JavaScript date is based on a time value that is milliseconds since midnight 01 January, 1970 UTC. A day holds 86,400,000 milliseconds. The JavaScript Date object range is -100,000,000 days to 100,000,000 days relative to 01 January, 1970 UTC."

DateTime,其值为Year = 1,Month = 1,Day = 1..31抛出异常。其中Year = 1..yyyy,Month = 2..MM,Day = 1..DD等工作正常。 ( “MyDateTime”: “/日期(-62132950800000 + 0000)/”)

我使用'DateTime'进行了大量测试,但问题是在限制范围内。

由于DateTime是ValueType,因此不允许使用空值,但Nullable<DateTime>也可以正常工作。(“MyDateTime”:null)

我今天遇到了同样的问题。 (感谢Shashank Kumar)