从Web页面传递到ASP.NET Web API服务时,JSON被截断

时间:2017-03-22 14:14:42

标签: c# asp.net json ajax asp.net-web-api

我有一个接受JSON数据的ASP.NET Web API服务。它适用于除我们之外的所有JSON数据类型。用户可以从他们的移动设备发送检查结果。检查结果由ASP.NET Web API服务作为JSON接收。

我用C#编写的单元测试能够毫无问题地发送检查JSON数据。但每当我从网页发送数据时,发送的JSON数据似乎都会被截断。

这是发送的内容。

{"Formname":"inspection","Formdata":{"UserId":1011357,"InspectionId":40013,"VehicleReg":"AA123ABC","Results":[{"QuestionId":100053,"OptionId":30192,"OptionResponse":"fantastic"}]},"Profile":{"EmailAddress":"myname@mycompany.com","OscarId":"1011369"}};

这是收到的。

{"Formname":"inspection","Formdata":{"UserId":1011357,"InspectionId":40013,"VehicleReg":"AA123ABC","Results":[{"QuestionId":100053,"OptionId":30192,"OptionResponse":"fantastic"

它的长度为254.

这是创建请求的AJAX。

var url = "http://mywebservice/api/routingtasks?formname=inspection";

        $.ajax({
            type: "POST",
            url: url,
            contentType: "application/json",
            headers: { "Authorization" : "TESTUSER " + signedToken},
            data: JSON.stringify(formdata),
            success: function(data){
                alert("Task successfully processed.");
            },
            error: function(error){
                alert("error: " + JSON.stringify(error));
            }
        })

接收JSON数据的Web API控制器的签名就是这个。

public HttpResponseMessage RoutePostData(string formname, [FromBody] JToken postdata)

我的C#单元测试能够毫无问题地发送相同的JSON数据,但是从网页发送JSON数据会导致问题。

3 个答案:

答案 0 :(得分:0)

如果formdata已经是javascript对象,则无需stringify

$.ajax({
            type: "POST",
            url: url,
            contentType: "application/json",
            headers: { "Authorization" : "TESTUSER " + signedToken},
            data: formdata,
            success: function(data){
                alert("Task successfully processed.");
            },
            error: function(error){
                alert("error: " + JSON.stringify(error));
            }
        })

您可以在文档页面上阅读更多内容:http://api.jquery.com/jQuery.ajax/

答案 1 :(得分:0)

你的json错了。 “个人资料”: {“EmailAddress”大括号丢失。不确定是否是复制粘贴错误或您的代码错误。然而它在梦幻之后就被截断了。

将你的json改为

{"Formname":"inspection","Formdata":{"UserId":1011357,"InspectionId":40013,"VehicleReg":"AA123ABC","Results":[{"QuestionId":100053,"OptionId":30192,"OptionResponse":"fantastic"}]},"Profile":{"EmailAddress":"myname@mycompany.com","OscarId":"1011369"}}

答案 2 :(得分:0)

试试这个:

<configuration>
     <appSettings>
          <add key="aspnet:MaxJsonDeserializerMembers" value="5000" />
     </appSettings>
</configuration>

将值设置为您选择的值。