我有一个接受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数据会导致问题。
答案 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>
将值设置为您选择的值。