Tempo limite de solicitação do IIS em operação ASP.NET longa

Estou tendo um tempo limite de solicitação do IIS quando executo uma operação longa. Por trás da cena, meu aplicativo ASP.NET está processando dados, mas o número de registros sendo processados ​​é grande e, portanto, a operação está demorando muito.

No entanto, acho que o IIS expira a session. Este é um problema com o IIS ou a session do ASP.NET?

desde já, obrigado

Se você deseja estender o período de tempo permitido para que um script do ASP.NET seja executado, aumente o valor de Server.ScriptTimeout . O padrão é 90 segundos para o .NET 1.xe 110 segundos para o .NET 2.0 e posterior.

Por exemplo:

 // Increase script timeout for current page to five minutes Server.ScriptTimeout = 300; 

Esse valor também pode ser configurado em seu arquivo web.config no elemento de configuração httpRuntime :

   

insira a descrição da imagem aqui

Por favor, observe de acordo com a documentação do MSDN :

“Esse tempo limite se aplica somente se o atributo debug no elemento de compilation for False. Portanto, se o atributo debug for True, você não precisará definir esse atributo como um valor grande para evitar o desligamento do aplicativo enquanto estiver depurando. ”

Se você já fez isso, mas está descobrindo que sua session está expirando, aumente o valor do HttpSessionState.Timeout do ASP.NET:

Por exemplo:

 // Increase session timeout to thirty minutes Session.Timeout = 30; 

Esse valor também pode ser configurado em seu arquivo web.config no elemento de configuração sessionState :

      

Se o seu script levar 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 access de administrador ao servidor, é considerar essa operação longa como candidata para implementação como uma tarefa agendada ou um serviço do Windows.

Ótimo e exaustivo responder @Kev!

Desde que eu fiz processamento longo apenas em uma página de administração em um aplicativo WebForms eu usei a opção de código. Mas, para permitir uma rápida correção temporária na produção, usei a versão de configuração em uma tag no web.config. Desta forma, a minha página de administração / processamento teve tempo suficiente, enquanto as páginas para os usuários finais e outras mantiveram o seu comportamento antigo.

Abaixo, forneci a configuração para os Googlers que precisam da mesma correção rápida. É claro que você deve usar outros valores além do meu exemplo de “4 horas”, mas observe que a session timeOut está em minutos, enquanto a executionTimeout está em segundos!

E – como já é de 2015 – para um não-quickfix você deve usar async / async do .net 4.5 agora, se possível, ao invés da página ASYNC do .NET 2.0 que era o estado da arte quando a KEV respondeu em 2010 🙂

  ...  ... other stuff ..       ...  

Estou postando isso aqui, porque passei 3 e 4 horas, e só encontrei respostas como aquelas acima, que dizem adicionar o executionTime , mas não resolve o problema no caso que você está usando o ASP .NET Core . Para isso, isso funcionaria:

No arquivo web.config, inclua o atributo requestTimeout no nó aspNetCore .

    

Neste exemplo, estou configurando o valor por 10 minutos.

Referência: https://docs.microsoft.com/pt-br/aspnet/core/hosting/aspnet-core-module#configuring-the-asp-net-core-module

Remova o caractere ~ no local

 path="~/Admin/SomePage.aspx" 

torna-se

 path="Admin/SomePage.aspx"