Как увеличить executeTimeout для долгосрочного запроса?
В моем приложении один запрос занимает 3 минуты. Я обнаружил, что Значение по умолчанию ExecutionTimeout составляет 110 секунд. Я пытался изменить это на 500 секунд, но это не помогло решить мою проблему. Где-то я обнаружил, что настройка <compilation debug="false">
позволяет настроить свойство ExecutionTimeout. Однако даже это не решило мою проблему.
Кто-нибудь знает, как увеличить тайм-аут выполнения для долгого запроса?
Ответы
Ответ 1
Тайм-аут выполнения составляет 90 секунд для .NET
Framework 1.0 и 1.1, 110 секунд в противном случае.
Если вам нужно изменить настройки с нуля, вам нужно сделать это в web.config
под <httpRuntime>
<httpRuntime executionTimeout = "number(in seconds)"/>
Но помните:
Этот тайм-аут применяется только в том случае, если атрибут debug в элементе компиляции False.
Посмотрите подробнее о элементе компиляции
Посмотрите на этот документ о httpRuntime Element
Ответ 2
Вы можете установить executionTimeout
в web.config для поддержки более длительного времени выполнения.
executionTimeout
указывает максимальное количество секунд, которое запрос может выполнять до автоматического отключения ASP.NET. MSDN
<httpRuntime executionTimeout = "300" />
Это сделает тайм-аут выполнения до пяти минут.
Дополнительный атрибут Int32.
Задает максимальное количество секунд, на которые разрешен запрос выполнить перед автоматическим отключением ASP.NET.
Этот тайм-аут применяется только в том случае, если атрибут debug в компиляции элемент False. Поэтому, если атрибут debug имеет значение True, вы делаете не нужно устанавливать этот атрибут на большое значение, чтобы избежать выключение приложения во время отладки. Значение по умолчанию - 110 секунд, Ссылка.
Ответ 3
RE. "Можем ли мы установить это значение для отдельной страницы" - MonsterMMORPG.
Да, вы можете (и обычно должны) заключить предыдущий ответ с помощью тега location.
например.
...
<location path="YourWebpage.aspx">
<system.web>
<httpRuntime executionTimeout="300" maxRequestLength="29296" />
</system.web>
</location>
</configuration>
Вышеприведенный фрагмент взят с конца моего собственного web.config, который я тестировал вчера - он работает для меня.
Ответ 4
Когда запрос длится так долго, я бы посоветовал запустить его асинхронно и использовать функцию обратного вызова для завершения.
У меня нет большого опыта работы с ASP.NET, но, возможно, вы можете использовать AJAX для этого асинхронного поведения.
Обычно веб-страница должна загружаться за считанные секунды, а не минуты. Не оставляйте своих пользователей так долго!
Ответ 5
в моем случае, мне нужно, чтобы мой wcf работал более двух часов. Настройка и не работает вообще. Wcf не выполнялся дольше 20-30 минут. Поэтому я изменил настройку тайм-аута простоя пула приложений в диспетчере IIS, после чего он сработает! В диспетчере IIS выберите пул приложений и щелкните правой кнопкой мыши по нему и выберите дополнительные параметры, а затем измените настройку тайм-аута простоя на нужные минуты. Итак, я думаю, что настройка web.config и настройка пула приложений необходимы.
Ответ 6
Чтобы установить тайм-аут на уровне страницы, вы можете использовать этот простой код:
Page.Server.ScriptTimeout = 60;
Примечание: 60 означает 60 секунд, этот тайм-аут применяется только в том случае, если атрибут debug в элементе компиляции False.