Предотвращение тайм-аута браузера при загрузке больших файлов

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

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

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

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

Обновлено: установка тайм-аута в Page_Load ничего не изменила.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
10
0
38 147
7

Ответы 7

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

Вы бы сделали это в фактическом iframe, который отправляется обратно, верно?

FlySwat 22.10.2008 02:31

Да, если вы получаете тайм-аут запроса в iframe, тогда вы должны установить Server.ScriptTimeout.

JasonS 22.10.2008 02:38

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

Обозреватель метабазы: http://support.microsoft.com/kb/840671

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

Еще один удар: см. Свой web.config:

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

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

maxRequestLength фактически выражается в килобайтах. См. msdn.microsoft.com/en-us/library/e1f13641.aspx

Daniel Chambers 28.09.2010 13:44

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

Godeke 28.09.2010 21:47

Думаю, может понадобиться настроить MaxRequestLength

Его в Web.config, я думаю, по умолчанию 4 мегабайта.

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

<httpRuntime maxRequestLength = "10240" />

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

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

Это не напрямую касается вопроса, и это может быть реклама.

Odrade 05.02.2010 23:17

Веб-сайт, на который есть ссылка, в настоящее время не используется.

John Zabroski 14.08.2013 19:37

Поместите это в свой 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

Это позволяет загружать 100000000 байт данных за раз.

Спасибо! Параметр requestFiltering помог мне. В IIS 7 я внес изменения с помощью следующей команды: Фильтрация запросов | Правила | Изменить настройки функции | Максимально допустимая длина содержимого.

ConnorsFan 16.01.2013 19:48

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

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

Откройте файл 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 Мбайт и так далее ...).

Другие вопросы по теме