Asp.net
對 maxJsonLength 預設值的混淆
我希望對 maxJsonLength 屬性進行一些澄清。這是一些背景資訊。
我在使用 jQuery 的 .NET Web 應用程序中未返回 AJAX 響應時遇到問題。當使用者更改下拉列表時,我手動建構並顯示了一些 HTML。問題是一個特定的選擇返回了一個大約 140kB 的字元串,但它不會顯示在瀏覽器中。我將問題縮小到字元串的長度太長。在搜尋 SO 和其他地方時,我發現可以通過在我的 web.config 中手動設置 maxJsonLength 的值來解決該問題。
我的困惑是關於 maxJsonLength 屬性的預設值。一些答案說它是 2097152 個字元並參考這個 MSDN 連結。但其他人說預設長度是 102400 並參考這個其他 MSDN 連結。在我的測試中,我得出的結論是預設值為 102400 字節,但我不確定其他預設值的原因。
MaxJsonLength根據JavaScriptSerializer創建方式的不同,有兩個預設值。2 097 152
這是
2097152直接創建序列化程序的時候。相關程式碼為:public class JavaScriptSerializer { ... internal const int DefaultMaxJsonLength = 2097152; ... public JavaScriptSerializer(...) { ... MaxJsonLength = DefaultMaxJsonLength; } }102 400
它是
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 { ... } ... }有幾個地方分配
serializer.MaxJsonLength了這個值——它們都在與 ASP.NET 相關的程式碼中。