我使用jQuery的$.ajax()函数向客户机发送了大量数据。我正在调用返回ASP.NET数据的JSON服务中的一个方法。对于大多数搜索来说,一切都很好,但是当我有一个大型数据集要返回时,我遇到了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);
发布于 2009-06-25 20:23:48
为从客户端脚本调用的web方法设置最大长度的唯一方法是通过web.config文件(如下所示)。设置这个有什么问题吗?我每次都会通过多次xhr调用来流式传输部分数据。
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="500000">
</jsonSerialization>
</webServices>
</scripting>
</system.web.extensions>
更新:默认大小为2097152,相当于4MB的Unicode字符串数据。您真的要将那么多数据发送回客户端吗?如果是这样,您可能需要考虑应用程序的设计,因为用户体验将是缓慢和繁琐的。
发布于 2012-08-28 05:42:30
2147483647
是要使用的正确值。为了避免代码中的混乱,您可以使用如下内容
var JsonSerializer = new JavaScriptSerializer();
JsonSerializer.MaxJsonLength = Int32.MaxValue;
发布于 2010-07-21 17:24:04
根据this forum post,此属性的最大值为2147483647。
我还没有花任何时间优化我返回的数据(我会在任何人看到它之前这样做)-但是有了这个值设置,IE已经开始给我“页面上的脚本太长了,你想杀死它吗”的消息。
一个解决方案是将数据分块--有没有人知道这样做的好方法(理想情况下在jQuery中)?当然,我也可以在成功处理程序中执行另一个ajax调用。
https://stackoverflow.com/questions/1045984
复制相似问题