2009-02-23 5 views
74

Je souhaite augmenter le délai d'expiration de la requête pour une action de contrôleur spécifique dans mon application. Je sais que je peux le faire dans le web.config pour l'ensemble de l'application, mais je préfère le changer sur cette seule action.Comment définir le délai d'expiration de la requête pour une action de contrôleur dans une application mvc asp.net

exemple web.config:

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

Comment puis-je faire?

+0

double possible de [ASP.NET MVC et httpRuntime executionTimeout] (http://stackoverflow.com/questions/492346/asp-net -mvc-et-httpruntime-executiontimeout) – balexandre

+0

@balexandre Non. – AgentFire

Répondre

100

Vous pouvez définir ce programme dans le contrôleur: -

HttpContext.Current.Server.ScriptTimeout = 300; 

Définit le délai d'attente à 5 minutes au lieu du défaut 110 secondes

+26

Avec l'arrivée de AsyncController, il est utile de rappeler que pour obtenir un effet similaire pour les requêtes asynchrones, vous devez utiliser la propriété [AsyncTimeout]. – Jason

+6

Ma question avec cette réponse est de savoir comment cela affecterait vraiment seulement l'action dans laquelle elle a été placée? Donc, après que la demande soit faite, ce paramètre sera-t-il remis pour toutes les demandes futures? – jhilden

+7

@jhilden HttpContext est instancié sur une base par requête, il serait donc de retour à la valeur par défaut sur la prochaine demande – reddy

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

Il est probablement (quel défaut bizarre?) mieux vaut définir ces valeurs dans web.config au lieu du contrôleur. Le codage en dur des options configurables est considéré comme dangereux.

+9

-1 Le codage dur est correct pour des circonstances spéciales, comme l'OP l'a décrit. Il semble qu'une action spécifique nécessite un délai d'attente différent de celui des autres actions, de sorte que le codage dur à l'intérieur de l'action sonne comme un bon endroit. – Levitikon

+10

Pourtant, c'est toujours la réponse la plus correcte ... – Eric

+4

executionTimeout ne fonctionne pas pour MVC - c'est la mauvaise réponse. voir ici: http://forums.asp.net/p/1715081/4723882.aspx?Re+web+config+executionTimeout+not+working+in+ASP+NET+MVC – jfren484

16

J'ai dû ajouter "Current" en utilisant .NET 4.5:

HttpContext.Current.Server.ScriptTimeout = 300; 
Questions connexes