Se você deseja estender o tempo permitido para a execução de um script ASP.NET, aumente o Server.ScriptTimeout
valor. O padrão é 90 segundos para .NET 1.xe 110 segundos para .NET 2.0 e posterior.
Por exemplo:
Server.ScriptTimeout = 300;
Este valor também pode ser configurado em seu web.config
arquivo no httpRuntime
elemento de configuração:
<httpRuntime executionTimeout="300"
... other configuration attributes ...
/>
Observe de acordo com a documentação do MSDN :
"Este tempo limite se aplica apenas se o atributo debug no elemento de compilação for False. Portanto, se o atributo debug for True, você não precisa definir este atributo com um valor grande para evitar o desligamento do aplicativo durante a depuração. "
Se você já fez isso, mas está descobrindo que sua sessão está expirando, aumente o HttpSessionState.Timeout
valor do ASP.NET :
Por exemplo:
Session.Timeout = 30;
Este valor também pode ser configurado em seu web.config
arquivo no sessionState
elemento de configuração:
<configuration>
<system.web>
<sessionState
mode="InProc"
cookieless="true"
timeout="30" />
</system.web>
</configuration>
Se o seu script estiver demorando vários minutos para ser executado e houver muitos usuários simultâneos, considere alterar a página para uma página assíncrona . Isso aumentará a escalabilidade do seu aplicativo.
A outra alternativa, se você tiver acesso de administrador ao servidor, é considerar essa operação de longa duração como um candidato para implementação como uma tarefa agendada ou um serviço do Windows.
Excelente e exaustiva resposta por @Kev!
Como eu processava muito apenas uma página de administração em um aplicativo WebForms, usei a opção de código. Mas para permitir uma correção rápida temporária na produção, usei a versão de configuração em uma
<location>
tag em web.config. Desta forma, minha página de administração / processamento teve tempo suficiente, enquanto as páginas para usuários finais e outras mantiveram seu comportamento antigo.Abaixo, apresentei a configuração para vocês, Googlers, que precisam da mesma solução rápida. É claro que você deve usar outros valores além do meu exemplo de '4 horas', mas OBSERVE que a sessão
timeOut
é em minutos, enquanto a solicitaçãoexecutionTimeout
está em segundos!E - já que é 2015 - para uma correção NÃO rápida, você deve usar async / await do .Net 4.5 agora, se possível, em vez da página ASYNC do .NET 2.0 que era o estado da arte quando a KEV respondeu em 2010 :).
<configuration> ... <compilation debug="false" ...> ... other stuff .. <location path="~/Admin/SomePage.aspx"> <system.web> <sessionState timeout="240" /> <httpRuntime executionTimeout="14400" /> </system.web> </location> ... </configuration>
fonte
Estou postando isso aqui, porque gastei umas 3 e 4 horas nisso, e só encontrei respostas como essas acima, que dizem para adicionar o
executionTime
, mas não resolve o problema no caso de você está usando ASP .NET Core . Para isso, isso funcionaria:No arquivo web.config, adicione o
requestTimeout
atributo noaspNetCore
nó.<system.webServer> <aspNetCore requestTimeout="00:10:00" ... (other configs goes here) /> </system.webServer>
Neste exemplo, estou definindo o valor para 10 minutos.
Referência: https://docs.microsoft.com/en-us/aspnet/core/hosting/aspnet-core-module#configuring-the-asp-net-core-module
fonte
OutOfProcess
modelo de hospedagem. PoisInProcess
não há configuração de tempo limite. O IIS continuará aguardando a conclusão do processo, consulteRemova o
~
personagem do local parapath="~/Admin/SomePage.aspx"
torna-se
path="Admin/SomePage.aspx"
fonte