Могу ли я установить неограниченную длину для maxJsonLength в web.config?

Способ построения вашей строки приведет к огромному объему сбора мусора.

Поскольку строка становится длиннее и длиннее, движок javascript должен продолжать выделять большие буферы и отбрасывать старые. В конце концов, он не сможет выделить достаточную память, не перерабатывая остатки всех старых строк.

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

Вместо этого попробуйте добавить новые элементы в DOM по одному с использованием jQuery-манипуляционного API

Также рассмотрите только визуализацию того, что видно, и выполните собственную прокрутку.

626
задан Jim G. 15 January 2015 в 15:02
поделиться

5 ответов

ПРИМЕЧАНИЕ: этот ответ относится только к веб-службам, если вы возвращаете JSON из метода контроллера, убедитесь, что вы также прочитали этот ответ SO ниже: https: / /stackoverflow.com/a/7207539/1246870


Свойство MaxJsonLength не может быть неограниченным, это целочисленное свойство, значение которого по умолчанию равно 102400 (100 КБ).

Вы можете установить свойство MaxJsonLength на своем веб-сайте .config:

<configuration> 
   <system.web.extensions>
       <scripting>
           <webServices>
               <jsonSerialization maxJsonLength="50000000"/>
           </webServices>
       </scripting>
   </system.web.extensions>
</configuration> 
705
ответ дан 22 November 2019 в 21:49
поделиться
 JsonResult result = Json(r);
 result.MaxJsonLength = Int32.MaxValue;
 result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
 return result;
2
ответ дан 22 November 2019 в 21:49
поделиться

Вопрос в том, действительно ли вам нужно возвращать 17к записей? Как вы планируете обрабатывать все данные в браузере? В любом случае пользователи не собираются прокручивать 17000 строк.

Лучшим подходом является получение только «нескольких верхних» записей и загрузка дополнительных по мере необходимости.

5
ответ дан 22 November 2019 в 21:49
поделиться

Похоже, что не существует "неограниченного" значения. Значение по умолчанию - 2097152 символа, что эквивалентно 4 МБ строковых данных Unicode.

Как уже отмечалось, 17000 записей трудно использовать в браузере. Если вы представляете агрегированное представление, может быть гораздо эффективнее выполнить агрегирование на сервере и передать только сводку в браузере. Например, рассмотрим браузер файловой системы, мы видим только верхнюю часть дерева, а затем отправляем дальнейшие запросы по мере детализации. Количество записей, возвращаемых в каждом запросе, сравнительно невелико. Представление в виде дерева может хорошо работать для больших наборов результатов.

2
ответ дан 22 November 2019 в 21:49
поделиться

Вы можете настроить максимальную длину для json-запросов в файле web.config:

<configuration>
    <system.web.extensions>
        <scripting>
            <webServices>
                <jsonSerialization maxJsonLength="....">
                </jsonSerialization>
            </webServices>
        </scripting>
    </system.web.extensions>
</configuration>

Значение по умолчанию для maxJsonLength - 102400 . Для получения дополнительных сведений см. Эту страницу MSDN: http://msdn.microsoft.com/en-us/library/bb763183.aspx

61
ответ дан 22 November 2019 в 21:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: