我希望能对maxJsonLength属性做一些澄清。这是一些背景信息。
我遇到的问题是,使用jQuery在.NET Web应用程序中没有返回AJAX响应。当用户更改下拉列表时,我手动构建并显示了一些HTML。问题是一个特定的选择返回了一个大约140kB的字符串,但它不会显示在浏览器中。我将问题缩小到字符串的长度太长。在搜索SO和其他地方时,我发现问题可以通过我的web.config中的manually setting the value of maxJsonLength来解决。
我的困惑是关于maxJsonLength属性的默认值。一些答案说这是2097152个字符和参考this MSDN link。但是其他人说默认长度是102400并且引用this other MSDN link。在我的测试中,我得出的结论是默认值是102400字节,但我不确定其他默认值的原因。
答案 0 :(得分:5)
在网站上创建一个页面,后面的代码中包含以下内容:
JavaScriptSerializer serializer = new JavaScriptSerializer();
Response.Write("Max Length: " + serializer.MaxJsonLength);
导致输出:
最大长度:2097152
所以我会使用docs中定义的值而不是How to。
但请注意,这是字符,而不是明确的字节:
默认值为2097152个字符,相当于4 MB的Unicode字符串数据
答案 1 :(得分:4)
MaxJsonLength
有两个默认值,具体取决于JavaScriptSerializer
的创建方式。
直接创建序列化程序时为2097152
。相关代码是:
public class JavaScriptSerializer {
...
internal const int DefaultMaxJsonLength = 2097152;
...
public JavaScriptSerializer(...) {
...
MaxJsonLength = DefaultMaxJsonLength;
}
}
当ASP.NET MVC(或更早版本)创建序列化程序时,它是102400
。相关代码是:
public sealed class ScriptingJsonSerializationSection : ConfigurationSection {
...
private static readonly ConfigurationProperty _propMaxJsonLength =
new ConfigurationProperty("maxJsonLength",
typeof(int),
102400,
...);
...
[ConfigurationProperty("maxJsonLength", DefaultValue = 102400)]
public int MaxJsonLength { ... }
...
}
有几个地方为此值分配serializer.MaxJsonLength
- 所有这些都在与ASP.NET相关的代码中。
答案 2 :(得分:0)
我遇到了类似的问题,从Web服务返回JSON。我将web.config中的maxJsonLength设置为足以处理我发回的数据的值。