【发布时间】:2017-08-14 17:12:57
【问题描述】:
我有一个接受 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 数据会导致问题。
【问题讨论】:
-
截断长度可能暗示一个答案,因为 254 不是随机数(字节)。您的应用程序设置中是否有可能限制发送缓冲区大小?
-
我看到254这个数字也是这么想的。看起来是这样的,但我不知道什么设置会影响JSON的大小。
标签: c# asp.net json ajax asp.net-web-api