Si desea extender la cantidad de tiempo permitido para que se ejecute un script ASP.NET, aumente el Server.ScriptTimeout
valor. El valor predeterminado es 90 segundos para .NET 1.xy 110 segundos para .NET 2.0 y posteriores.
Por ejemplo:
Server.ScriptTimeout = 300;
Este valor también se puede configurar en su web.config
archivo en el httpRuntime
elemento de configuración:
<httpRuntime executionTimeout="300"
... other configuration attributes ...
/>
Tenga en cuenta de acuerdo con la documentación de MSDN :
"Este tiempo de espera se aplica solo si el atributo de depuración en el elemento de compilación es Falso. Por lo tanto, si el atributo de depuración es Verdadero, no es necesario que establezca este atributo en un valor grande para evitar el cierre de la aplicación mientras realiza la depuración. "
Si ya ha hecho esto, pero descubre que su sesión está caducando, aumente el HttpSessionState.Timeout
valor de ASP.NET :
Por ejemplo:
Session.Timeout = 30;
Este valor también se puede configurar en su web.config
archivo en el sessionState
elemento de configuración:
<configuration>
<system.web>
<sessionState
mode="InProc"
cookieless="true"
timeout="30" />
</system.web>
</configuration>
Si su secuencia de comandos tarda varios minutos en ejecutarse y hay muchos usuarios simultáneos, considere cambiar la página a una página asincrónica . Esto aumentará la escalabilidad de su aplicación.
La otra alternativa, si tiene acceso de administrador al servidor, es considerar esta operación de larga duración como un candidato para implementar como una tarea programada o un servicio de Windows.
¡Excelente y exhaustiva respuesta de @Kev!
Como hice un procesamiento largo solo en una página de administración en una aplicación WebForms, usé la opción de código. Pero para permitir una solución rápida temporal en la producción, utilicé la versión de configuración en un
<location>
etiqueta en web.config. De esta manera, mi página de administración / procesamiento obtuvo suficiente tiempo, mientras que las páginas para usuarios finales y demás mantuvieron su antiguo comportamiento de tiempo de espera.A continuación, les di la configuración para los empleados de Google que necesitan la misma solución rápida. Debe utilizar otros valores por supuesto que mi ejemplo '4 horas', pero DO nota de que la sesión
timeOut
es en cuestión de minutos, mientras que la solicitudexecutionTimeout
es en cuestión de segundos!Y, dado que ya es 2015, para una NO-corrección rápida, debe usar async / await de .Net 4.5 ahora si es posible, en lugar de la página ASYNC de .NET 2.0 que era de vanguardia cuando KEV respondió en 2010 :).
<configuration> ... <compilation debug="false" ...> ... other stuff .. <location path="~/Admin/SomePage.aspx"> <system.web> <sessionState timeout="240" /> <httpRuntime executionTimeout="14400" /> </system.web> </location> ... </configuration>
fuente
Estoy publicando esto aquí, porque pasé como 3 y 4 horas en él, y solo encontré respuestas como las de arriba, que dicen agregar el
executionTime
, pero no resuelve el problema en el caso de que está utilizando ASP .NET Core . Para ello, esto funcionaría:En el archivo web.config, agregue el
requestTimeout
atributo en elaspNetCore
nodo.<system.webServer> <aspNetCore requestTimeout="00:10:00" ... (other configs goes here) /> </system.webServer>
En este ejemplo, establezco el valor en 10 minutos.
Referencia: https://docs.microsoft.com/en-us/aspnet/core/hosting/aspnet-core-module#configuring-the-asp-net-core-module
fuente
OutOfProcess
modelo de alojamiento. PorqueInProcess
no hay configuración de tiempo de espera. IIS seguirá esperando a que se complete el proceso, consulteQuite el
~
carácter en la ubicación parapath="~/Admin/SomePage.aspx"
se convierte en
path="Admin/SomePage.aspx"
fuente