我正在努力应对maxJsonLength错误。 我将非常长的xml字符串(~4MB)从控制器操作传递到视图中的javascript方法。此方法处理数据并使用AJAX将其发送回另一个控制器方法,这里我收到错误。
我在MaxJsonLength
对象中设置JsonResult
,在控制器方法中,将此字符串从控制器传递到视图没有问题。
但是当我在处理后尝试将其传回来时,我会收到错误。
这是我的Controller方法whitch准备数据:
private JsonResult PrepareXml(int someId)
{
// preparing data...
string xmlData = "..."; //(~4Mb)
JsonResult res = Json(xmlData);
res.MaxJsonLength = 10000000; // 10Mb
return res;
}
这是我的Controller方法,它试图处理从ajax方法传递的数据:
private JsonResult GetProcesedXml(string resultXml)
{
// This method is not ivoking
}
以下是我的脚本方法:
var data = {
someId: rowId,
};
$.ajax({
type: "POST",
url: "MyController/PrepareXml",
data: data,
contentType: "application/json; charset=utf-8",
success: function (result) {
// proces the result (big xml file)
//...
var processedResult = ""; // size of processedResult is a little bit bigger than 'result'
var data2 = {
resultXml: processedResult
};
$.ajax({
type: "POST",
url: "MyController/GetProcesedXml",
data: data2,
contentType: "application/json; charset=utf-8",
success: function (r) {
alert('success');
},
error: function (data) {
alert(data.responseText);
}
});
}
});
我已经尝试过了:
<add key="aspnet:MaxJsonDeserializerMembers" value="2147483647" /> //(max value)
<requestLimits maxAllowedContentLength="2097151000" /> //(max value)
<httpRuntime maxRequestLength="10000" /> //(~10MB)
答案 0 :(得分:0)
我找到了解决此问题的方法。 我已将Ajax方法中的内容类型更改为&#34; text / plain&#34;并在我的xml文件数据上使用了JSON.stringify。
$(".heroIcons .waxingButton").click(function(){
$(".waxing").slideToggle(1500);
});
$(".heroIcons .facialsButton").click(function(){
$(".facials").slideToggle(1500);
});
$(".heroIcons .bodywrapsButton").click(function(){
$(".bodywraps").slideToggle(1500);
});
另一个变化是控制器。我从输入流中读取文件并将其解析为JSON类型:
var data2 = { resultXml: processedResult };
$.ajax({
type: "POST",
url: "MyController/GetProcesedXml",
data: JSON.stringify(data2),
contentType: "text/plain",
success: function (r) {
alert('success');
},
});