Путаница со значением по умолчанию maxJsonLength - PullRequest
7 голосов
/ 22 января 2010

Я надеюсь получить некоторые разъяснения по свойству maxJsonLength. Вот некоторая справочная информация.

У меня возникла проблема с ответом AJAX, который не возвращался в веб-приложении .NET с использованием jQuery. Когда пользователь изменил выпадающий список, я вручную создал и отобразил некоторый HTML. Проблема заключалась в том, что один конкретный выбор возвращал строку размером около 140 КБ, но она не отображалась в браузере. Я сузил проблему до слишком длинной строки. При поиске в SO и в других местах я обнаружил, что проблему можно решить с помощью , вручную установив значение maxJsonLength в моем файле web.config.

Моя путаница связана со значением по умолчанию свойства maxJsonLength. В некоторых ответах говорится, что это 2097152 символа и ссылка на эту ссылку MSDN . Но другие говорят, что длина по умолчанию - 102400, а ссылка - это другая ссылка MSDN . В моем тестировании я пришел к выводу, что по умолчанию используется значение 102400 байт, но я не уверен в причине другого значения по умолчанию.

Ответы [ 3 ]

5 голосов
/ 22 января 2010

Создание страницы на веб-сайте со следующим кодом в коде:

JavaScriptSerializer serializer = new JavaScriptSerializer();

Response.Write("Max Length: " + serializer.MaxJsonLength);

привело к выводу:

Макс. Длина: 2097152

Так что я бы пошел со значением, определенным в документах , а не как.

Обратите внимание, что это символы, а не байты в явном виде:

По умолчанию используется 2097152 символа, что эквивалентно 4 МБ строковых данных Юникода

4 голосов
/ 24 августа 2016

Существуют два значения по умолчанию для 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.

0 голосов
/ 22 января 2010

Я столкнулся с похожими проблемами, возвращая JSON из веб-службы. Я установил maxJsonLength в web.config на достаточно большое значение для обработки данных, которые я отправлял обратно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...