Как увеличить время ожидания запроса в IIS?

150

Как увеличить время ожидания запроса в IIS 7.0? То же самое делается на вкладке приложения в настройках ASP в IIS 6.0. Я не могу найти раздел конфигурации asp.net в IIS 7.0

Dotnet Rocks
источник

Ответы:

182

Добавьте это к вашей веб-конфигурации

<system.web>
    <httpRuntime executionTimeout="180" />
</system.web>

https://msdn.microsoft.com/en-us/library/e1f13641(v=vs.85).aspx

Необязательный атрибут TimeSpan.

Задает максимальное количество секунд, в течение которых запрос может быть выполнен до автоматического отключения ASP.NET.

Это время ожидания применяется, только если атрибут отладки в элементе компиляции имеет значение False. Чтобы предотвратить отключение приложения во время отладки, не устанавливайте для этого тайм-аута большое значение.

По умолчанию используется значение 00:01:50 (110 секунд).

Джефф Дулиттл
источник
8
Можно ли это установить из графического интерфейса IIS 7 Manager?
Трийнко
13
Время ожидания указывается в секундах, по умолчанию - 110 секунд. Примечание. Этот тайм-аут применяется только в том случае, если для атрибута отладки в элементе <compilation> установлено значение false!
Йовен
1
@Jowen: ты рок! Ранее я изменил отладку на ложные дни назад и не связывал ее со всеми ошибками тайм-аута, которые я получал. Теперь я знаю.
Дуг С
Обратите внимание, что максимальное значение executeTimeout также является максимальным значением TimeSpan (10675199.02: 48: 05.4775807), которое ... больше, чем нужно
Антуан Пеллетье
72

В диспетчере IIS щелкните правой кнопкой мыши сайт и выберите « Управление веб- сайтом» -> « Дополнительные параметры» . Под опцией Connection Limits вы должны увидеть Тайм-аут соединения .

Грег Шеклз
источник
6
Это то же самое, что и время ожидания запроса. Я пытаюсь перенести данные из документа XML и время ожидания запроса. Так что, если я увеличу время ожидания соединения, это будет решено.
Dotnet Rocks
12
Я не думаю, что это правильно, если «HTTP Keep-Alive» включен, то этот параметр синхронизации применяется к нему, то есть, как долго соединение будет оставаться в живых, я не думаю, что это связано с «тайм-аутом запроса» (как долго iis ждет для выполнения страницы) ..
визуальный
1
Я думаю, что это правильный ответ в определенных ситуациях, таких как загрузка большого файла. В ожидании загрузки,
Дэвид Хаммонд
45

Чтобы увеличить время ожидания запроса, добавьте это в web.config

<system.web>
    <httpRuntime executionTimeout="180" />
</system.web>

и для конкретной страницы добавить это

<location path="somefile.aspx">
    <system.web>
        <httpRuntime executionTimeout="180"/>
    </system.web>
</location>

Значение по умолчанию составляет 90 секунд для .NET 1.x.

По умолчанию 110 секунд для .NET 2.0 и более поздних версий.

Рей Ли
источник
3
Вы заработали +1 с информацией о локации
Гонза Овьедо
Очень полезно. Спасибо!
Джим1427
29

В IIS> = 7, т.е. в <webLimits>раздел заменен ConnectionTimeout, HeaderWaitTimeout, MaxGlobalBandwidthи MinFileBytesPerSecIIS 6 настроек метабазы.

Пример конфигурации:

<configuration>
   <system.applicationHost>
      <webLimits connectionTimeout="00:01:00"
         dynamicIdleThreshold="150"
         headerWaitTimeout="00:00:30"
         minBytesPerSecond="500"
      />
   </system.applicationHost>
</configuration>

Для справки: дополнительную информацию об этих настройках в IIS можно найти здесь . Кроме того, мне не удалось добавить этот раздел в файл web.config через «редактор конфигурации» диспетчера IIS, хотя он появился, когда я добавил его и выполнил поиск в конфигурации.

AndrewPK
источник
5
Это заменяет ConnectionTimeout, а не httpRuntime's executionTimeout.
user2864740
15

Ниже приведены шаги, чтобы решить вашу проблему.

  1. Откройте свой IIS
  2. Перейти к « Сайты » вариант.
  3. Мышь правой кнопкой мыши.
  4. Затем откройте свойство « Управление веб-сайтом ».
  5. Затем нажмите «Дополнительные настройки ».
  6. Разверните раздел « Пределы подключения », здесь вы можете установить « время подключения »

введите описание изображения здесь

Анжан Кант
источник
ссылка для получения дополнительной информации: docs.microsoft.com/en-us/previous-versions/dotnet/…
JPatel
11

Я знаю, что вопрос был о ASP, но, возможно, кто-то найдет этот ответ полезным.

Если у вас есть сервер за IIS 7.5 (например, Tomcat). В моем случае у меня настроена серверная ферма с сервером Tomcat. В этом случае вы можете изменить время ожидания с помощью диспетчера IIS:

  • перейдите в Фермы серверов -> {Имя сервера} -> Прокси
  • изменить значение в Тайм-аут поле ввода
  • нажмите Применить (верхний правый угол)

или вы можете изменить его в файле cofig:

  • открыть % WinDir% \ System32 \ Inetsrv \ Config \ applicationHost.config
  • настроить конфигурацию сервера webFarm так, чтобы она была похожа на следующую

Пример:

<webFarm name="${SERVER_NAME}" enabled="true"> 
  <server address="${SERVER_ADDRESS}" enabled="true">
    <applicationRequestRouting httpPort="${SERVER_PORT}" />
  </server>
  <applicationRequestRouting>
    <protocol timeout="${TIME}" />
  </applicationRequestRouting>
</webFarm>

$ {TIME} в чч: мм: сс формат (так что если вы хотите , чтобы установить его на 90 секунд , а затем положить туда 00:01:30)

В случае Tomcat (и, возможно, других контейнеров сервлетов) вы должны помнить об изменении времени ожидания в % TOMCAT_DIR% \ conf \ server.xml (просто найдите атрибут connectionTimeout в теге Connector и помните, что он указан в миллисекундах )

Павел Гжень
источник
2
Обратите внимание, что вы должны публиковать только те ответы, которые непосредственно связаны с заданным вопросом. Поскольку этот вопрос касается исключительно IIS, ответ с информацией о Tomcat на самом деле не актуален.
Эндрю Барбер
9
В этом случае я думаю, что ответ уместен, поскольку указанный здесь вариант использования (с использованием маршрутизации запроса приложения IIS для маршрутизации на другой сервер) относится к IIS. Настройка здесь также настраивается в IIS Manager. FWIW, этот ответ помог мне выяснить, какой тайм-аут запроса я должен изменить. (Так как в диспетчере IIS много настроек времени ожидания)
Дженсен Чинг,
3

Используйте следующую команду Power shell, чтобы изменить время ожидания (Request Timeout)

Обратите внимание, что я дал это для веб-сайта по умолчанию, прежде чем использовать их, пожалуйста, измените сайт, а затем попробуйте использовать это.

 Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site'  -filter "system.web/httpRuntime" -name "executionTimeout" -value "00:01:40"

Или вы можете использовать приведенный ниже код C #, чтобы сделать то же самое

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample {

    private static void Main() {

        using(ServerManager serverManager = new ServerManager()) { 
            Configuration config = serverManager.GetWebConfiguration("Default Web Site");

            ConfigurationSection httpRuntimeSection = config.GetSection("system.web/httpRuntime");
            httpRuntimeSection["executionTimeout"] = TimeSpan.Parse("00:01:40");

            serverManager.CommitChanges();
        }
    }
}

Или вы можете использовать JavaScript для этого.

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site";

var httpRuntimeSection = adminManager.GetAdminSection("system.web/httpRuntime", "MACHINE/WEBROOT/APPHOST/Default Web Site");
httpRuntimeSection.Properties.Item("executionTimeout").Value = "00:01:40";

adminManager.CommitChanges();

Или вы можете использовать команды AppCmd.

appcmd.exe set config "Default Web Site" -section:system.web/httpRuntime /executionTimeout:"00:01:40" 
Сурадж Диксит
источник