2008-10-21 2 views
9

У меня есть небольшое управление загрузкой файлов, которое я написал для веб-форм ASP.NET, использующих IFrame и ASP.NET AJAX.Предотвращение тайм-аута браузера при загрузке большого файла

Однако при больших загрузках браузер отключается, прежде чем он сможет закончить публикацию формы.

Есть ли способ увеличить это?

Я не очень-то интересен в альтернативных решениях, поэтому не предлагайте изменить всю вещь, пожалуйста. Он работает хорошо для < 5 meg uploads, я просто хотел бы получить его до 8mb.

EDIT: Установка таймаута в Page_Load не изменила ничего.

ответ

2

В Page_Load установите Server.ScriptTimeout значение, которое работает для вас. Полагаю, в считанные секунды.

+0

Вы бы сделали это в реальном iframe, который будет отправлен назад, правильно? – FlySwat 2008-10-21 22:31:05

+0

Да, если вы получаете тайм-аут запроса в iframe, тогда вы установили бы Server.ScriptTimeout. – JasonS 2008-10-21 22:38:44

10

Необходимо обновить настройку метабазы ​​на IIS6 и более поздних версиях. Ключ «AspMaxRequestEntityAllowed» и выражается в байтах. Я настоятельно рекомендую Metabase Explorer внести изменения, пробираясь через XML на% systemroot% \ system32 \ inetserv \ metabase.xml, хотя это возможно.

Metabase Проводник: http://support.microsoft.com/kb/840671

Хммм, возможно, я ложному дерево ... вы бы не делать 5 МБ файлы, если это не было уже отрегулированы.

Другой удар в нем: видеть ваше web.config:

<system.web> 
    <httpRuntime maxRequestLength="10240" executionTimeout="360"/> 
</system.web> 

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

+0

maxRequestLength фактически находится в килобайтах. См. Http://msdn.microsoft.com/en-us/library/e1f13641.aspx – 2010-09-28 09:44:45

+0

Вы правы, иначе небольшое число, о котором я упоминаю, не имеет смысла. Спасибо, отредактирован. – Godeke 2010-09-28 17:47:00

1

Я думаю, что вам, возможно, потребуется скорректировать MaxRequestLength

Its в Web.config, я думаю, по умолчанию его 4megs.

Следующая позволит ~ 10 Мег файл:

<httpRuntime maxRequestLength="10240" /> 
-6

Проверьте код Velodoc XP Edition. Он включает в себя модуль потоковой передачи данных, возобновляемый обработчик загрузки и элементы управления загрузкой ASP.NET, основанные на расширениях ASP.NET Ajax, и все это с открытым исходным кодом.

Для получения дополнительной информации проверьте также www.memba.com и www.velodoc.com.

3

Место это в web.config

<system.web> 
    <httpRuntime executionTimeout="360" maxRequestLength="100000" /> 

Это позволяет 360 второй тайм-аут и 100,000 килобайт загружаемых данных одновременно.

Если это не сработает, запустите эту команду на своем сервере IIS. (замените [IISWebsitename])

C:\Windows\System32\inetsrv>appcmd set config "[IISWebsitename]" -section:requestFiltering -requestLimits.maxAllowedContentLength:100000000 -commitpath:apphost 

Это позволяет передавать 100 000 000 байтов данных за один раз.

-6

Я решил это с помощью PHP с HTML:

  1. я начинаю сеанс
  2. ввести петлю
  3. создать цикл, который перегружает страницу, которая делает часть работы в время
  4. делать до тех пор, пока работа не будет выполнена
  5. код внутри цикла выполняет часть задания
  6. приращение переменной сеанса в точку к следующей части работы
  7. перезагрузите страницу с помощью Java Script // это приведет к перезапуску Северов страницы таймера
  8. петля
  9. загрузить страницу, чтобы сообщить, что работа сделана
1

Откройте Web .config файл, и чуть ниже <system.web> тега, добавьте следующий тег:

<httpRuntime executionTimeout="90" maxRequestLength="4096" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" enableVersionHeader="true" />

Теперь, просто взять взгляд на maxRequestLength = "4096" атрибута тега <httpRuntime>. Как вы, возможно, поняли, все, что вам нужно сделать, это изменить значение на другое значение по вашему выбору (8192 для 8 Мб, 16384 для 16 Мб, 65536 для 64 Мб и т. Д.).

Смежные вопросы