2010-10-23 22 views
7

Intenté configurar el executionTimeout en web.config para una aplicación asp.net mvc. executionTimeout no funciona en asp.net mvc

<location path="Home/Index"> 
    <system.web> 
     <httpRuntime executionTimeout="5"/> 
    </system.web> 
    </location> 

todas las máquinas del Thread.sleep en la acción Índice

public ActionResult Index() 
     { 
      Thread.Sleep(30000);    
      return View(); 
     } 

también, me puse de depuración de complilation a "falso". después de la acción, duerme unos 30 segundos y la excepción "solicitud de tiempo de espera" no se descarta y la vista se procesó correctamente.

¿Alguien sabe cómo hacer que el executeTimeout funcione en asp.net mvc?

+0

posible duplicado de [ASP.NET MVC y httpRuntime executionTimeout] (http://stackoverflow.com/questions/492346/asp-net-mvc-and-httpruntime-executiontimeout) –

Respuesta

4

Es necesario cumplir con lo siguiente:

  1. nombre de dominio no es localhost (para probar el tiempo de espera, debe usar "YourComputerName" en lugar de "localhost").
  2. El proyecto se compila en modo de lanzamiento.
  3. <compilation debug="false">

Entonces Además, piense en esto:

Internamente ASP.NET utiliza un temporizador para invocar el proceso de cancelación petición. Este temporizador se dispara una vez cada 15 segundos, por lo que si el executionTimeout se establece en 3 segundos, en realidad la solicitud puede expirar en cualquier momento entre 3 segundos y 18 segundos.

Cuando se dispara el temporizador, se utiliza un hilo del ThreadPool para verificar todas las solicitudes. Los que han agotado el tiempo de espera se envían un ThreadAbortException llamando Abortar en el hilo que ejecuta la solicitud.

Nota: Tenga en cuenta que ThreadAbortException solo se puede observar por código administrado. Entonces, si el hilo está llamando a algunas funciones no administradas, el hilo no se abortará, y por lo tanto el tiempo de espera no se aplicará, hasta que la ejecución regrese al mundo administrado. Esa puede ser una duración de retardo arbitraria según lo que haga ese código no administrado.

Leer más: http://consultantpoint.wordpress.com/2012/09/07/how-the-execution-timeout-is-managed-in-asp-net/

Cuestiones relacionadas