JavaScriptSerializer期间ASP.NET MVC4中的MaxJsonLength异常

时间:2015-10-22 10:01:45

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

在我的一个控制器操作中,当我向视图返回超过10000行JsonResult时。 我将得到以下例外情况。

使用JSON JavaScriptSerializer进行序列化或反序列化时出错。字符串的长度超过maxJsonLength属性上设置的值。 enter image description here

我已将web.config中的maxJsonLength属性设置为更高的值,但遗憾的是没有显示如下所示的任何效果:



  <system.web.extensions>
    <scripting>
      <webServices>
        <jsonSerialization maxJsonLength="2147483644"/>
      </webServices>
    </scripting>
  </system.web.extensions>
&#13;
&#13;
&#13;

当我使用Json类时,我也设置了MaxJsonLength:

    public JsonResult GetList(GridPager pager, string queryStr)
    {
        List<SysExceptionModel> list = _exceptionBLL.GetList(ref pager, queryStr);
        var json = new
        {
            total = pager.totalRows,
            rows = list.ToArray()
        };

        var jsonresults = Json(json);
        jsonresults.MaxJsonLength = int.MaxValue;
        return jsonresults;
    }

这两个设置对我没有帮助。 我很困惑。

一行如下:

<00> 0000688A-85F5-4F72-BE86-85BCADED2DE NULL BBBB BBBB BBBB BBBB BBBB 2015-10-22 02:27:38.000

2 个答案:

答案 0 :(得分:1)

尝试使用NewtonSoft.Json库。或者尝试覆盖JsonResult,如下例所示:CustomJsonResult

在xml中设置max jsonSerialization并不总是有效。

答案 1 :(得分:0)

在第一个示例中,尝试直接在MaxJsonLength实例上设置JavaScriptSerializer属性。根据{{​​3}},当您显式创建序列化程序的实例时,它不会使用配置文件的jsonSerialization元素。

JavaScriptSerializer serializer = new JavaScriptSerializer();
serializer.MaxJsonLength = int.MaxValue;