MVC2错误:字符串的长度超过maxJsonLength属性上设置的值

时间:2016-02-23 03:49:45

标签: c# asp.net asp.net-mvc

我在提交包含大量数据的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();
    ....
}

1 个答案:

答案 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