2009-05-26 17 views
5

Tengo una página que tarda unos minutos en ejecutarse. Cuando configuro debug="false" en la etiqueta <compilation /> en web.config, obtengo una "Solicitud agotada". error (y tratar interno/bloques de captura en mi código de obtener un "hilo estaba siendo abortada." error."La solicitud agotó el tiempo de espera". error al configurar debug = "false"

Lo que es el punto de referencia para permitir que las páginas largas se ejecuten en el modo de producción? ¿Tiene el modo de depuración tiene un tiempo de espera infinito?

+0

¿Estás seguro de que necesita una página que tarda unos pocos minutos para correr? ¿No puedes mover esa funcionalidad a una aplicación de consola que programes? – sisve

+0

Ehh ... solo se accede a través de un formulario web para facilitar su uso. Es una página protegida y una tarea programada aparece cada noche. Lo "correcto" de hacer es probablemente cancelar estas tareas a través de un servicio de Windows o algo así, pero si no está roto, trabaje en algo que realmente pueda ayudar a generar ingresos :) – JerSchneid

Respuesta

5

Solo debe aumentar el tiempo de espera del script para las ejecuciones de página. Por defecto es de 90 segundos, por lo que si usted necesita más tiempo, cambiarlo en el siguiente elemento system.web (atributo executionTimeout):

<httpRuntime executionTimeout="seconds" 
      maxRequestLength="kbytes" 
      minFreeThreads="numberOfThreads" 
      minLocalRequestFreeThreads="numberOfThreads" 
      appRequestQueueLimit="numberOfRequests" 
      useFullyQualifiedRedirectUrl="true|false" /> 
+0

Además de aumentar el tiempo de espera, es posible que también quiero ver cómo hacer que la página sea asíncrona. Una página de larga ejecución en modo sincrónico consumirá un hilo durante la duración. Al hacerlo asincrónico, libera ese hilo de ASP.NET para que pueda procesar otras solicitudes, mientras que un hilo adicional se genera en segundo plano para manejar su solicitud de larga ejecución. Hoy en día, las páginas asincrónicas ASP.NET son bastante fáciles de usar. – jrista

5

puede establecer la duración máxima de las solicitudes en web.config:..

<system.web> 
    ... 
    <httpRuntime executionTimeout="600" /> 

Dónde executionTimeout especifica el número máximo de segundos que una solicitud está permitido ejecutar antes de apagar automáticamente por ASP.NET detalles se ser encontrado here.

Cuestiones relacionadas