首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >超出了JavaScriptSerializer.MaxJsonLength。处理这个问题的最佳实践是什么?

超出了JavaScriptSerializer.MaxJsonLength。处理这个问题的最佳实践是什么?
EN

Stack Overflow用户
提问于 2009-06-25 20:13:54
回答 5查看 42.4K关注 0票数 16

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

以下是来自web服务的相关代码片段:

代码语言:javascript
复制
Dictionary<string, object> jsonValuePairs = new Dictionary<string, object>();
//add some data to the dictionary...
return System.Web.Script.Serialization.JavaScriptSerializer.Serialize(jsonValuePairs);
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-06-25 20:23:48

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

代码语言:javascript
复制
<system.web.extensions>
  <scripting>
      <webServices>
        <jsonSerialization maxJsonLength="500000">
        </jsonSerialization>
      </webServices>
  </scripting>
</system.web.extensions>

更新:默认大小为2097152,相当于4MB的Unicode字符串数据。您真的要将那么多数据发送回客户端吗?如果是这样,您可能需要考虑应用程序的设计,因为用户体验将是缓慢和繁琐的。

票数 35
EN

Stack Overflow用户

发布于 2012-08-28 05:42:30

2147483647是要使用的正确值。为了避免代码中的混乱,您可以使用如下内容

代码语言:javascript
复制
var JsonSerializer = new JavaScriptSerializer();
JsonSerializer.MaxJsonLength = Int32.MaxValue;
票数 11
EN

Stack Overflow用户

发布于 2010-07-21 17:24:04

根据this forum post,此属性的最大值为2147483647。

我还没有花任何时间优化我返回的数据(我会在任何人看到它之前这样做)-但是有了这个值设置,IE已经开始给我“页面上的脚本太长了,你想杀死它吗”的消息。

一个解决方案是将数据分块--有没有人知道这样做的好方法(理想情况下在jQuery中)?当然,我也可以在成功处理程序中执行另一个ajax调用。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1045984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档