Подтвердить что ты не робот

Превышен предел буферного буфера

Я запускаю простой запрос, чтобы получить данные из моей базы данных и отображать их. Я получаю сообщение об ошибке Response Buffer Limit Exceeded.

Ошибка: ошибка объекта ответа "ASP 0251: 80004005"
Превышен лимит буферного буфера
/abc/test_maintenanceDetail.asp, строка 0
Выполнение страницы ASP привело к тому, что буфер отклика превысил установленный лимит.

Я также пробовал Response.flush в моем цикле, а также использовал response.buffer = false в верхней части страницы, но все же я не получаю никаких данных.

Моя база данных содержит 5600 записей для этого, пожалуйста, дайте мне несколько шагов или код для решения проблемы.

4b9b3361

Ответ 1

Я знаю, что это слишком поздно, но для всех, кто сталкивается с этой проблемой: если вы используете какой-либо цикл (в моем случае, Do-While) для отображения данных, убедитесь, что вы переходите к следующей записи (в моем случае, rs.MoveNext).

Ответ 3

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

В классическом ASP, в верхней части страницы, после <%@Language="VBScript"%> добавьте: <%Response.Buffer = False%>

В ASP.NET вы добавили бы Buffer="False" в свою страницу. Например: <%@Page Language="C#" Buffer="False"%>

Ответ 4

Я столкнулся с такой же проблемой, моя версия IIS - 8.5. Увеличенный Response Buffering Limit под ASP -> Limit Properties решил проблему.

  1. В IIS 8.5, выберите свой проект, вы можете увидеть параметры в правой части. В этом разделе IIS вы можете видеть опцию ASP.

ASP option

  1. В окне параметров увеличьте значение Response Buffering Limit до 40194304 (приблизительно 40 МБ).

Increase buffer limit

  1. Отойдите от этой опции, в правой верхней части вы увидите меню Действия, выберите Применить. Это решило мою проблему.

Apply settings

Ответ 5

Если вам не разрешено изменять ограничение буфера на уровне сервера, вам необходимо использовать метод & lt;% Response.Buffer = False%>.

ОДНАКО, если вы все еще получаете эту ошибку и у вас есть большая таблица на странице, виновником может быть сама таблица. По своему дизайну некоторые версии Internet Explorer буферизируют весь контент до того, как он будет отображен на странице. Таким образом, даже если вы говорите странице не буферизировать содержимое, элемент таблицы может быть буферизован, что вызывает эту ошибку.

Некоторые альтернативные решения могут заключаться в разбивке на страницы результатов таблицы, но если вам нужно отобразить всю таблицу, в которой есть тысячи строк, добавьте эту строку кода в середине цикла генерации таблицы: & lt;% Response.Flush%>. Из соображений скорости вы можете также рассмотреть возможность добавления базового счетчика, чтобы сброс происходил только каждые 25 или 100 строк или около того.

Недостатки отсутствия буферизации вывода:

  1. замедление общей загрузки страницы
  2. таблицы и столбцы будут регулировать свою ширину при заполнении контента (кажется, что таблица покачивается)
  3. Пользователи смогут нажимать на ссылки и взаимодействовать со страницей до ее полной загрузки. Поэтому, если у вас есть какой-то JavaScript в нижней части страницы, вы можете переместить его наверх, чтобы убедиться, что он загружен до того, как некоторые из ваших быстро движущихся пользователей нажмут на какие-либо элементы.

См. эту статью базы знаний для получения дополнительной информации http://support.microsoft.com/kb/925764

Надеюсь, это поможет.

Ответ 6

Большое вам спасибо! <% Response.Buffer = False% > работал как шарм! Моя таблица asp/HTML, которая возвращала пустую страницу около 2700 записей. Следующие строки отладки помогли выявить проблему буферизации: я заменяю цикл Do While следующим образом и играю с моими лимитированными номерами, чтобы увидеть, что происходит:

Заменить

Do Пока не rs.EOF

'и т.д.... ваш блок кода, который записывает строки таблицы

rs.moveNext

Петля

с

Do While reccount < 2500

если rs.EOF, затем пересчет = 2501

'и т.д.... ваш блок кода, который записывает строки таблицы

rs.moveNext

Петля

response.write "recount =" и пересчитать

поднять или опустить 2500 и 2501, чтобы увидеть, является ли проблема с буфером. для моего набора записей я мог видеть, что пустая страница возвращается, пустой стол, происходит около 2700 записей, удачи всем и еще раз спасибо за решение этой проблемы! Такое простое отличное решение!

Ответ 7

Вы можете увеличить предел следующим образом:

  • Остановить IIS.
  • Найдите файл% WinDir%\System32\Inetsrv\Metabase.xml
  • Изменить значение AspBufferingLimit. Значение по умолчанию - 4194304, что составляет около 4 МБ. Изменение его на 20 МБ (20971520).
  • Перезапустите IIS.

Ответ 8

Еще один ответ на одно и то же сообщение об ошибке (это только что зафиксировало мою проблему) заключается в том, что системный диск был низким на диске. Значение около 700kb бесплатно. Удаление большого количества неиспользуемых материалов на этом действительно старом сервере, а затем перезапуск IIS и веб-сайта (возможно, только IIS было необходимо) заставляют проблему исчезнуть для меня.

Я уверен, что другие ответы более полезны для большинства людей, но для быстрого исправления просто убедитесь, что системный диск имеет некоторое свободное пространство.

Ответ 9

Я исправил ошибку "ASP 0251: 80004005" Ограничение буферного буфера "следующим образом:

Чтобы увеличить предел буферизации в IIS 6, выполните следующие действия:

Нажмите "Пуск", выберите "Выполнить", введите cmd и нажмите "ОК". Введите следующую команду и нажмите клавишу ВВОД: cd/d% systemdrive%\inetpub\adminscripts Введите следующую команду и нажмите клавишу ВВОД: cscript.exe adsutil.vbs SET w3svc/aspbufferinglimit LimitSize Примечание. LimitSize представляет собой размер ограничения буферизации в байтах. Например, число 67108864 устанавливает размер ограничения буферизации до 64 МБ. Чтобы убедиться, что предел буфера установлен правильно, выполните следующие действия:

Нажмите "Пуск", выберите "Выполнить", введите cmd и нажмите "ОК". Введите следующую команду и нажмите клавишу ВВОД: cd/d% systemdrive%\inetpub\adminscripts Введите следующую команду и нажмите клавишу ВВОД: cscript.exe adsutil.vbs GET w3svc/aspbufferinglimit

относится к https://support.microsoft.com/en-us/kb/944886

Ответ 10

Если вы ищете причину и не хотите бороться с системными настройками, это две основные ситуации, с которыми я столкнулся:

  • У вас может быть бесконечный цикл без next или recordest.movenext
  • Ваши текстовые данные очень большие, но вы думаете, что это не так! Общей причиной такой ситуации является скопировать-вставить изображение из слова Microsoft прямо в редактор, и поэтому сервер переводит изображение в объекты данных и сохраняет его в текстовом поле. Это может легко занять ресурсы базы данных и вызвать проблему с буфером при повторном вызове данных.

Ответ 11

В моем случае я просто пишу эту строку перед открытием rs...........

Response.Flush

rs.Открытый запрос, конн