Jon*_* S. 8 asp.net configuration json
我希望能对maxJsonLength属性做一些澄清.这是一些背景信息.
我遇到了一个问题,即使用jQuery在.NET Web应用程序中没有返回AJAX响应.当用户更改下拉列表时,我手动构建并显示了一些HTML.问题是一个特定的选择返回了一个大约140kB的字符串,但它不会显示在浏览器中.我将问题缩小到字符串的长度太长.在搜索SO和其他地方时,我发现可以通过在web.config中手动设置maxJsonLength的值来解决该问题.
我的困惑是关于maxJsonLength属性的默认值.一些答案说这是2097152个字符并引用此MSDN链接.但是其他人说默认长度是102400并且引用了另一个MSDN链接.在我的测试中,我得出的结论是默认值是102400字节,但我不确定其他默认值的原因.
在网站上创建一个页面,后面的代码中包含以下内容:
JavaScriptSerializer serializer = new JavaScriptSerializer();
Response.Write("Max Length: " + serializer.MaxJsonLength);
Run Code Online (Sandbox Code Playgroud)
导致输出:
最大长度:2097152
所以我会使用docs中定义的值而不是How to.
但请注意,这是字符,而不是明确的字节:
默认值为2097152个字符,相当于4 MB的Unicode字符串数据
MaxJsonLength根据JavaScriptSerializer创建方式的不同,有两个默认值。
这是2097152直接创建序列化程序的时间。相关代码为:
public class JavaScriptSerializer {
...
internal const int DefaultMaxJsonLength = 2097152;
...
public JavaScriptSerializer(...) {
...
MaxJsonLength = DefaultMaxJsonLength;
}
}
Run Code Online (Sandbox Code Playgroud)
这是 102400由ASP.NET MVC(或更早版本)创建序列化程序的时间。相关代码为:
public sealed class ScriptingJsonSerializationSection : ConfigurationSection {
...
private static readonly ConfigurationProperty _propMaxJsonLength =
new ConfigurationProperty("maxJsonLength",
typeof(int),
102400,
...);
...
[ConfigurationProperty("maxJsonLength", DefaultValue = 102400)]
public int MaxJsonLength { ... }
...
}
Run Code Online (Sandbox Code Playgroud)
有几个地方可以分配serializer.MaxJsonLength该值-所有这些都在与ASP.NET相关的代码中。
| 归档时间: |
|
| 查看次数: |
12505 次 |
| 最近记录: |