JavaScriptSerializer期间ASP.NET MVC中的MaxJsonLength异常
在我的一个控制器动作中,我返回一个非常大的JsonResult
来填充网格。
我收到以下InvalidOperationException
异常:
在使用JSON JavaScriptSerializer进行序列化或反序列化期间出错。 字符串的长度超过maxJsonLength属性中设置的值。
不幸的是,将web.config
的maxJsonLength
属性设置为更高的值不会产生任何影响。
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="2147483644"/>
</webServices>
</scripting>
</system.web.extensions>
我不想像这个SO回答中提到的那样将它作为字符串传递回去。
在我的研究中,我遇到了这篇博客文章,其中编写自己的ActionResult
(例如LargeJsonResult : JsonResult
)被推荐来绕过这种行为。
这是唯一的解决方案吗?
这是ASP.NET MVC中的错误吗?
我错过了什么吗?
非常感激任何的帮助。
看起来这已经在MVC4中修复了。
你可以做到这一点,这对我来说效果很好:
public ActionResult SomeControllerAction()
{
var jsonResult = Json(veryLargeCollection, JsonRequestBehavior.AllowGet);
jsonResult.MaxJsonLength = int.MaxValue;
return jsonResult;
}
您也可以像这里建议的那样使用ContentResult
而不是子类化JsonResult
。
var serializer = new JavaScriptSerializer { MaxJsonLength = Int32.MaxValue, RecursionLimit = 100 };
return new ContentResult()
{
Content = serializer.Serialize(data),
ContentType = "application/json",
};
不幸的是,web.config设置被默认的JsonResult实现忽略。 所以我想你需要实现一个自定义json结果来克服这个问题。
链接地址: http://www.djcxy.com/p/42053.html上一篇: MaxJsonLength exception in ASP.NET MVC during JavaScriptSerializer