Як збільшити час очікування запиту в IIS?


150

Як збільшити час очікування запиту в IIS 7.0? Це робиться на вкладці програми в конфігурації ASP, розташованої в IIS 6.0. Я не в змозі знайти розділ конфігурації asp.net в IIS 7.0

Відповіді:


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: Ти рок! Раніше я налагоджував налагодження на помилкові дні тому і не пов'язував його з усіма помилками очікування, які я отримував. Тепер я знаю.
Doug S

Зауважте, що максимальне значення ExecuTimeout - це також максимальне значення TimeSpan (10675199.02: 48: 05.4775807), яке ... більше, ніж вам потрібно
Antoine Pelletier

72

У диспетчері IIS клацніть правою кнопкою миші на сайті та перейдіть до розділу Керувати веб- сайтом -> Додаткові налаштування . Під опцією Обмеження підключення ви повинні побачити тайм-аут підключення .


6
Це те саме, що таймаут запиту. Я намагаюся перенести дані з XML-документа та часу очікування reuqest. Тож якщо я збільшить час очікування з'єднання, це вирішиться.
Dotnet Rocks

12
я не думаю, що це правильно, якщо "HTTP Keep-Alive" увімкнено, то це налаштування часу застосовується до нього, тобто тривалість з'єднання залишається в живих, я не думаю, що це пов'язано з "очікуванням очікування" (як довго я чекаю для оформлення сторінки) ..
візуальне

1
Я думаю, що це правильна відповідь у певних ситуаціях, таких як завантаження великого файлу. Дочекавшись завантаження,
Девід Хаммонд

45

Щоб збільшити час очікування запиту, додайте це до web.config

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

а для певної сторінки додайте це

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

За замовчуванням для .NET 1.x. - 90 секунд.

За замовчуванням 110 секунд для .NET 2.0 та новіших версій.


3
Ви заробили +1 інформацією про місцезнаходження
Gonza Oviedo

Дуже корисний. Дякую!
jim1427

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, хоча він з'являвся, як тільки я додав його та шукав конфігурацію.


5
Це замінює ConnectionTimeout, а не httpRuntime 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} в HH: сс: мм формат (так що якщо ви хочете , щоб встановити його на 90 секунд , а потім покласти туди 00:01:30)

У разі Tomcat (і, ймовірно, інших контейнерів сервлетів) вам потрібно пам'ятати, щоб змінити час очікування в % TOMCAT_DIR% \ conf \ server.xml (просто шукайте атрибут connectionTimeout в тезі Connector , і пам’ятайте, що він вказаний в мілісекундах )


2
Зауважте, що ви повинні публікувати лише відповіді, які безпосередньо пов'язані з поставленим запитанням. Оскільки це питання суто стосується IIS, відповідь із інформацією про Tomcat справді не є актуальною.
Ендрю Барбер

9
У цьому випадку я вважаю, що відповідь є актуальною, оскільки вказаний тут випадок використання (використовуючи маршрутизацію запиту програми IIS для маршрутизації на інший сервер) приблизно про IIS. Налаштування тут налаштовуються і в IIS Manager. FWIW, ця відповідь допомогла мені вирішити, який саме час очікування запиту я повинен змінити. (Оскільки в програмі IIS Manager є багато налаштувань тайм-ауту)
Jensen Ching,

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" 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.