web-dev-qa-db-fra.com

Comment définir le délai de demande pour une action de contrôleur dans une application mvc asp.net

Je souhaite augmenter le délai de 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'application entière, mais je préfère le changer sur cette seule action.

Exemple Web.config:

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

Comment fait-on ça?

86
Kyle West

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

HttpContext.Current.Server.ScriptTimeout = 300;

Définit le délai d'expiration à 5 minutes au lieu des 110 secondes par défaut (quelle étrange valeur par défaut?)

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

Il est probablement préférable de définir de telles valeurs dans web.config au lieu de contrôleur. Le codage en dur des options configurables est considéré comme dangereux.

63
Wojtek Trelak

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

HttpContext.Current.Server.ScriptTimeout = 300;
19

Tout simplement, cela fonctionnera.

//main thread
System.Threading.Thread.Sleep(1000);

//task delay
await Task.Delay(5000);
0