超过了JavaScriptSerializer.MaxJsonLength。处理这个问题的最佳做法是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (47)

我使用jQuery的$ .ajax()函数向客户端发送了大量的数据。我在返回JSON数据的ASP.NET Web服务中调用一个方法。对于大多数搜索,一切都很好,但是当我有大量数据集返回时,我遇到了JavaScriptSerializer MaxJsonLength属性的问题。处理这个问题的最佳做法是什么?我不想随意设置最大长度。如果返回的数据大于当前最大值,或者是否应该重写并向客户端发送数据卡片,我可以在Web服务中设置MaxJsonLength吗?

以下是来自Web服务的相关片段:

Dictionary<string, object> jsonValuePairs = new Dictionary<string, object>();
//add some data to the dictionary...
return System.Web.Script.Serialization.JavaScriptSerializer.Serialize(jsonValuePairs);
提问于
用户回答回答于

设置从客户端脚本调用的Web方法的最大长度的唯一方法是通过web.config文件(下面)。设置此问题有什么问题?我会每次通过多个xhr调用来传输部分数据。

<system.web.extensions>
  <scripting>
      <webServices>
        <jsonSerialization maxJsonLength="500000">
        </jsonSerialization>
      </webServices>
  </scripting>
</system.web.extensions>

默认大小为2097152,相当于4 MB的Unicode字符串数据。你真的要将那么多的数据发回给客户吗?如果这样,你可能需要看应用程序的设计,因为用户体验会变得缓慢和繁琐。

用户回答回答于

2147483647 是使用的正确值。只是为了避免代码混淆,你可以使用类似的东西

var JsonSerializer = new JavaScriptSerializer();
JsonSerializer.MaxJsonLength = Int32.MaxValue;

扫码关注云+社区