Если вы хотите увеличить время, разрешенное для выполнения сценария ASP.NET, увеличьте Server.ScriptTimeout
значение. По умолчанию 90 секунд для .NET 1.x и 110 секунд для .NET 2.0 и новее.
Например:
Server.ScriptTimeout = 300;
Это значение также можно настроить в вашем web.config
файле в httpRuntime
элементе конфигурации:
<httpRuntime executionTimeout="300"
... other configuration attributes ...
/>
Обратите внимание, согласно документации MSDN :
"Этот тайм-аут применяется только в том случае, если атрибут отладки в элементе компиляции имеет значение False. Следовательно, если атрибут отладки имеет значение True, вам не нужно устанавливать для этого атрибута большое значение, чтобы избежать завершения работы приложения во время отладки. "
Если вы уже сделали это, но обнаружили, что срок вашего сеанса истекает, увеличьте HttpSessionState.Timeout
значение ASP.NET :
Например:
Session.Timeout = 30;
Это значение также можно настроить в вашем web.config
файле в sessionState
элементе конфигурации:
<configuration>
<system.web>
<sessionState
mode="InProc"
cookieless="true"
timeout="30" />
</system.web>
</configuration>
Если выполнение вашего сценария занимает несколько минут и одновременно работает много пользователей, рассмотрите возможность изменения страницы на асинхронную страницу . Это повысит масштабируемость вашего приложения.
Другой альтернативой, если у вас есть доступ администратора к серверу, является рассмотрение этой длительной операции как кандидата для реализации в качестве запланированной задачи или службы Windows.
Отличный и исчерпывающий ответ @Kev!
Поскольку я выполнял долгую обработку только на одной странице администратора в приложении WebForms, я использовал вариант кода. Но чтобы разрешить временное быстрое исправление на производстве, я использовал версию конфигурации в
<location>
теге в web.config. Таким образом, моя страница администратора / обработки получила достаточно времени, в то время как страницы для конечных пользователей и тому подобное сохранили свое старое поведение при тайм-ауте.Ниже я привел конфигурацию для вас, гуглеров, нуждающихся в таком же быстром исправлении. Конечно, вы должны использовать другие значения, кроме моего примера «4 часа», но ОБЯЗАТЕЛЬНО обратите внимание, что сеанс
timeOut
выполняется в минутах, а запросexecutionTimeout
- в секундах!И - поскольку это уже 2015 год - для NON-quickfix вы должны использовать async / await .Net 4.5, если это вообще возможно, вместо страницы ASYNC .NET 2.0, которая была современной, когда KEV ответил в 2010 году. :).
<configuration> ... <compilation debug="false" ...> ... other stuff .. <location path="~/Admin/SomePage.aspx"> <system.web> <sessionState timeout="240" /> <httpRuntime executionTimeout="14400" /> </system.web> </location> ... </configuration>
источник
Я публикую это здесь, потому что я потратил на это 3 или 4 часа, и я нашел только ответы, подобные приведенным выше, в которых говорится, что нужно добавить
executionTime
, но это не решает проблему в случае, если вы используете ASP .NET Core . Для него это сработает:В файле web.config добавьте
requestTimeout
атрибут вaspNetCore
узел.<system.webServer> <aspNetCore requestTimeout="00:10:00" ... (other configs goes here) /> </system.webServer>
В этом примере я устанавливаю значение на 10 минут.
Ссылка: https://docs.microsoft.com/en-us/aspnet/core/hosting/aspnet-core-module#configuring-the-asp-net-core-module
источник
OutOfProcess
модели хостинга. ИбоInProcess
нет настройки тайм-аута. IIS будет продолжать ждать завершения процесса, ссылка здесь: github.com/dotnet/AspNetCore.Docs/issues/16870Удалить
~
персонажа в локации, чтобыpath="~/Admin/SomePage.aspx"
становится
path="Admin/SomePage.aspx"
источник