ASP.NET MVC4序列化或反序列化JSON期间出错 - 大数据

czW*_*ter 3 c# json jsonserializer large-data asp.net-mvc-4

我写信给你网站上有错误:使用JSON JavaScriptSerializer进行序列化或反序列化时出错.字符串的长度超过maxJsonLength属性上设置的值.

使用的技术:C#,.NET FW 4.5,ASP.NET MVC4和Lint to SQL,Kendo UI(显示结果的网格).

我想返回(就Json而言)一大组数据 - 实际上我有50,000条记录(不会发生超过250,000条记录)

我尝试在web.config中放大maxJsonLength和将来启用压缩 - 同样的错误:

  <system.web.extensions>
    <scripting>
      <webServices>
        <jsonSerialization maxJsonLength="10485760"/>
      </webServices>
      <scriptResourceHandler enableCompression="true" enableCaching="true"/>
    </scripting>
  </system.web.extensions>
Run Code Online (Sandbox Code Playgroud)

接下来我尝试在C#类中重写return方法 - 同样的错误:a)默认

public JsonResult GetResult()
{
  // execute query for get result
  var myBigData = from ......
      select new
      {
          .......
      };

  // return result
  return this.Json(myBigData, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)

b)重写(仍然是错误的)

public JsonResult GetResult()
{
  // execute query for get result
  var myBigData = from ......
      select new
      {
          .......
      };

  // return result
  var jsonResult = Json(myBigData, JsonRequestBehavior.AllowGet);
  jsonResult.MaxJsonLength = int.MaxValue;
  return jsonResult;
}
Run Code Online (Sandbox Code Playgroud)

为了消除错误,我尝试了较少数量的数据 - 一切都是正确的:测试哪个是正确的:1 - 10个6999个项目

最好的问候,彼得

注意:不幸的是,我经历了很多讨论(这里),但没有成功,所以我为任何重复的主题道歉.

use*_*268 5

似乎从该值web.config将被忽略,并根据文件,你必须明确地创建一个实例JavascriptSerializer

public ContentResult GetResult() 
{
    var serializer = new JavaScriptSerializer();
    serializer.MaxJsonLength = Int32.MaxValue;
    var result = new ContentResult();
    result.Content = serializer.Serialize(data);
    result.ContentType = "text/json";
    return result;
}
Run Code Online (Sandbox Code Playgroud)

至少它对我有用:)