2009-02-23 13 views
74

Chcę zwiększyć limit czasu żądania dla określonego działania kontrolera w mojej aplikacji. Wiem, że mogę to zrobić w web.config dla całej aplikacji, ale wolałbym zmienić ją tylko na tej jednej akcji. PrzykłademJak ustawić limit czasu żądania dla jednego działania kontrolera w aplikacji mvc asp.net

Web.config:

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

jaki sposób mogę to zrobić?

+0

możliwe duplikat [ASP.NET MVC i httpRuntime executionTimeout] (http://stackoverflow.com/questions/492346/asp-net -mvc-and-httpruntime-executiontimeout) – balexandre

+0

@balexandre Nope. – AgentFire

Odpowiedz

100

Można ustawić to programowo w sterowniku: -

HttpContext.Current.Server.ScriptTimeout = 300; 

Ustawia limit czasu do 5 minut, zamiast domyślnego 110 sekund

+26

Wraz z nadejściem AsyncController warto pamiętać, że aby uzyskać podobny efekt dla asynchronicznych żądań, należy użyć właściwości [AsyncTimeout]. – Jason

+6

Moje pytanie z tą odpowiedzią brzmi, w jaki sposób wpłynęłoby to na jedno działanie, w którym zostało umieszczone? Więc po tym, jak żądanie zostanie wykonane, to ustawienie zostanie przywrócone dla wszystkich przyszłych żądań? – jhilden

+7

@jhilden HttpContext jest tworzony na podstawie na żądanie, więc byłoby powrotem do wartości domyślnej na następne żądanie – reddy

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

Prawdopodobnie jest to (co dziwne domyślne?) lepiej ustawić takie wartości w web.config zamiast w kontrolerze. Kodowanie konfigurowalnych opcji jest uważane za szkodliwe.

+9

-1 Twarde kodowanie jest w porządku dla szczególnych okoliczności opisanych w OP. Wygląda na to, że konkretna akcja wymaga innego czasu niż pozostałe działania, więc trudne kodowanie wewnątrz akcji brzmi jak dobre miejsce. – Levitikon

+10

Jednak nadal jest to najbardziej poprawna odpowiedź ... – Eric

+4

executionTimeout nie działa dla MVC - jest to zła odpowiedź. zobaczyć tutaj: http://forums.asp.net/p/1715081/4723882.aspx?Re+web+config+executionTimeout+not+working+in+ASP+NET+MVC – jfren484

16

musiałem dodać "Current" za pomocą .NET 4.5:

HttpContext.Current.Server.ScriptTimeout = 300; 
Powiązane problemy