這個異常是在執行MVC中的JsonResult的時拋出的,根據異常 的Message得知是序列化的字符串超出了maxJsonLength的限制。並得知這個屬性是由JavaScriptSerializer提供的,因 爲MVC內置的JsonResult是用JavaScriptSerializer進行序列化的。在網上快速搜索了一下,碰到這個問題的很多,大部分 推薦的解決的方法都是在web.config中加入如下配置,設置maxJsonLength的長度即前端
1 <system.web.extensions>
2 <scripting>
3 <webServices>
4 <jsonSerialization maxJsonLength="102400"/>
5 </webServices>
6 </scripting>
7 </system.web.extensions>
而後根據須要改變maxJsonLength的大小web
運行正常,可是問題依舊還在,並且無論maxJsonLength設置成多大都無效ajax
沒辦法,只能繼續搜索查找資料了。json
原來MVC框架內置的JsonResult代碼中,在使用JavaScriptSerializer時,都是採用的默認值,沒有從maxJsonLength讀取值,即忽略了這個配置。框架
最後在stackoverflow上找到了答案post
在控制器中添加兩個JsonResult,而後在須要返回大數據json的action調用,即用return LargeJson()代替return Json()大數據
public JsonResult LargeJson(object data)
{
return new System.Web.Mvc.JsonResult()
{
Data = data,
MaxJsonLength = Int32.MaxValue,
};
}
public JsonResult LargeJson(object data,JsonRequestBehavior behavior)
{
return new System.Web.Mvc.JsonResult()
{
Data = data,
JsonRequestBehavior = behavior,
MaxJsonLength = Int32.MaxValue
};
}