2009-02-23 8 views
74

Deseo aumentar el tiempo de espera de solicitud para una acción de controlador específica en mi aplicación. Sé que puedo hacerlo en la web.config para toda la aplicación, pero prefiero cambiarlo solo en esta acción. ejemploCómo configuro el tiempo de espera de solicitud para una acción de controlador en una aplicación asp.net mvc

Web.config:

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

¿Cómo lo hago?

+0

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

+0

@balexandre Nope. – AgentFire

Respuesta

100

Puede configurar esta programación en el controlador: -

HttpContext.Current.Server.ScriptTimeout = 300; 

Establece el tiempo de espera de 5 minutos en lugar del predeterminado 110 segundos

+26

Con la llegada del AsyncController, vale la pena recordar que para obtener un efecto similar para las solicitudes asincrónicas, debe usar la propiedad [AsyncTimeout]. – Jason

+6

Mi pregunta con esta respuesta es ¿cómo afectaría solo la única acción en la que se colocó? Entonces, después de completar la solicitud, ¿se restablece esa configuración para todas las solicitudes futuras? – jhilden

+7

@jhilden HttpContext se crea una instancia por solicitud, por lo que volvería al valor predeterminado en la siguiente solicitud – reddy

49
<location path="ControllerName/ActionName"> 
    <system.web> 
     <httpRuntime executionTimeout="1000"/> 
    </system.web> 
</location> 

Probablemente es (lo que es un defecto raro?) es mejor establecer dichos valores en web.config en lugar de controlador. La codificación de las opciones configurables se considera dañina.

+9

-1 La codificación dura está bien para circunstancias especiales como se describe en el PO. Parece que una acción específica necesita un tiempo de espera diferente al resto de las acciones, por lo que una codificación difícil dentro de la acción suena como un buen lugar. – Levitikon

+10

Sin embargo, esta sigue siendo la respuesta más correcta ... – Eric

+4

executionTimeout no funciona para MVC: esta es la respuesta incorrecta. ver aquí: http://forums.asp.net/p/1715081/4723882.aspx?Re+web+config+executionTimeout+not+working+in+ASP+NET+MVC – jfren484

16

he tenido que añadir "actual" utilizando .NET 4.5:

HttpContext.Current.Server.ScriptTimeout = 300; 
Cuestiones relacionadas