【问题标题】:ASP.NET MVC4 Error during serialization or deserialization JSON - big data序列化或反序列化 JSON 期间的 ASP.NET MVC4 错误 - 大数据
【发布时间】:2013-02-24 14:28:44
【问题描述】:

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

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

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

我尝试扩大 maxJsonLength 并在 web.config 中启用压缩 - 出现同样的错误:

  <system.web.extensions>
    <scripting>
      <webServices>
        <jsonSerialization maxJsonLength="10485760"/>
      </webServices>
      <scriptResourceHandler enableCompression="true" enableCaching="true"/>
    </scripting>
  </system.web.extensions>

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

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

  // return result
  return this.Json(myBigData, JsonRequestBehavior.AllowGet);
}

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;
}

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

最好的问候, 彼得

注意:不幸的是,我进行了很多讨论(这里),但没有成功,所以对于任何重复的主题,我深表歉意。

【问题讨论】:

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


    【解决方案1】:

    seemsweb.config 中的值被忽略,根据documentation,您必须显式创建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;
    }
    

    至少它对我有用:)

    【讨论】:

    • 我刚刚找到了一个更好的solution
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    • 2018-07-28
    • 1970-01-01
    相关资源
    最近更新 更多