我在提交包含大量数据的HTML表单时收到以下错误消息。我已根据this answer中的建议添加了web.config设置,但错误仍然存在。
"使用JSON JavaScriptSerializer进行序列化或反序列化时出错。字符串的长度超过maxJsonLength属性上设置的值。"
我可能错过了什么?如何在调试期间检查当前的maxJsonLength设置? (验证是否应用或忽略了web.config设置。)
查看(HTML表单):
using (Html.BeginForm("Submit", "Form", FormMethod.Post, new { @id = "submitForm", @enctype = "multipart/form-data" }))
{
....
}
Javascript (点击按钮提交时):
document.getElementById('submitForm').submit();
控制器:
[ValidateInput(false)]
public ActionResult Submit(EprocModel eprocModel)
{
....
}
Global.asax (出现错误的地方):
在调试模式下提交表单时,控制器方法Submit()
开头的断点不会命中。相反,执行在global.asax中输入Application_Error()
,其error.Message
值包含上面发布的错误消息。此时,我检查了RequestContext的内容长度是31325596,仍低于web.config中设置的maxJsonLength
:
private void Application_Error(object sender, EventArgs ea)
{
var error = Server.GetLastError();
....
}
答案 0 :(得分:1)
将json结果设置为更大
var jsonResult = Json(data, JsonRequestBehavior.AllowGet);
jsonResult.MaxJsonLength = int.MaxValue;
return jsonResult;
https://msdn.microsoft.com/en-us/library/system.web.mvc.jsonresult.maxjsonlength%28v=vs.118%29.aspx