¿Cómo configuro el tiempo de espera de la solicitud para una acción del controlador en una aplicación asp.net mvc?


94

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

Ejemplo de Web.config:

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

¿Cómo lo hago?


Respuestas:


129

Puede configurar esto mediante programación en el controlador: -

HttpContext.Current.Server.ScriptTimeout = 300;

Establece el tiempo de espera en 5 minutos en lugar de los 110 segundos predeterminados (¿qué extraño valor predeterminado?)


30
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 realmente solo a la acción en la que se colocó? Entonces, una vez que se realiza la solicitud, ¿esa configuración se vuelve a colocar para todas las solicitudes futuras?
jhilden

10
@jhilden HttpContext se crea una instancia por solicitud, por lo que volvería al valor predeterminado en la próxima solicitud
tobiak777

6
Es posible que desee agregar HttpContext.Current (falta 'Current')
bboyle1234

5
Me sale: "httpcontext no contiene una definición de actual". Estoy usando .NET Core 2.0. ¿Algúna idea de cómo arreglar esto?
Tadej

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

Probablemente sea mejor establecer dichos valores en web.config en lugar de en el controlador. La codificación de opciones configurables se considera perjudicial.


15
-1 La codificación rígida está bien para circunstancias especiales como se describe en el OP. Parece que una acción específica necesita un tiempo de espera diferente al resto de las acciones, por lo que la codificación estricta dentro de la acción parece un buen lugar.
Levitikon

6
executionTimeout no funciona para MVC; esta es la respuesta incorrecta. ver aquí: forums.asp.net/p/1715081/…
jfren484

3
tenga en cuenta que esto se ignora completo si el modo de depuración está en msdn.microsoft.com/en-us/library/vstudio/… executionTimeout Atributo Int32 opcional. Especifica el número máximo de segundos que se permite ejecutar una solicitud antes de que ASP.NET la cierre automáticamente. Este tiempo de espera se aplica solo si el atributo de depuración del 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.
Nick van Esch

4
Esta no es la respuesta más correcta, porque tiene el efecto secundario de cambiar también el tiempo de espera de ejecución para todas las demás acciones del controlador.
Eric J.

1
@EricJ. solo dentro de las rutas del controlador que comienzan conControllerName\ActionName
GoldBishop

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.