2009-02-23 8 views
74

Desidero aumentare il timeout della richiesta per un'azione di controller specifica nella mia applicazione. So che posso farlo nel web.config per l'intera applicazione, ma preferirei cambiarlo solo con questa azione. esempioCome impostare il timeout della richiesta per un'azione del controller in un'applicazione asp.net mvc

web.config:

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

Come posso fare?

+0

possibile duplicato del [ASP.NET MVC e httpRuntime executionTimeout] (http://stackoverflow.com/questions/492346/asp-net -mvc-and-httpruntime-executiontimeout) – balexandre

+0

@balexandre No. – AgentFire

risposta

100

È possibile impostare questo livello di codice nel controller: -

HttpContext.Current.Server.ScriptTimeout = 300; 

imposta il timeout a 5 minuti al posto del default 110 secondi

+26

Con l'avvento di AsyncController vale la pena ricordare che per ottenere un effetto simile per le richieste asincrone è necessario utilizzare la proprietà [AsyncTimeout]. – Jason

+6

La mia domanda con questa risposta è in che modo influenzerebbe veramente solo l'azione in cui è stata inserita? Quindi, dopo che la richiesta è stata eseguita, tale impostazione viene ripristinata per tutte le richieste future? – jhilden

+7

@jhilden HttpContext è istanziato su una base per richiesta, quindi tornerebbe al valore predefinito alla successiva richiesta – reddy

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

Probabilmente è (ciò che un difetto di strano?) meglio impostare tali valori in web.config anziché in controller. Hardcoding delle opzioni configurabili è considerato dannoso.

+9

-1 L'hard coding è okay per circostanze speciali come descritto dall'OP. Sembra che un'azione specifica abbia bisogno di un timeout diverso rispetto al resto delle azioni, così la codifica all'interno dell'azione sembra un buon posto. – Levitikon

+10

Eppure questa è ancora la risposta più corretta ... – Eric

+4

executionTimeout non funziona per MVC - questa è la risposta sbagliata. vedere qui: http://forums.asp.net/p/1715081/4723882.aspx?Re+web+config+executionTimeout+not+working+in+ASP+NET+MVC – jfren484

16

ho dovuto aggiungere "Current" utilizzando .NET 4.5:

HttpContext.Current.Server.ScriptTimeout = 300;