2010-10-23 16 views
7

Próbowałem ustawić executionTimeout w web.config dla aplikacji mvc asp.net. executionTimeout nie działa na asp.net mvc

<location path="Home/Index"> 
    <system.web> 
     <httpRuntime executionTimeout="5"/> 
    </system.web> 
    </location> 

każdy używany Thread.Sleep w akcji Index

public ActionResult Index() 
     { 
      Thread.Sleep(30000);    
      return View(); 
     } 

również mogę ustawić debug complilation na "false". po wykonaniu czynności w trybie uśpienia około 30 sekund i wyjątek "limitu czasu żądania" nie zostanie odrzucony, a widok został poprawnie wyświetlony.

każdy wie, jak sprawić, by executionTimeout działało w asp.net mvc?

+0

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

Odpowiedz

4

trzeba spełnić następujące:

  1. nazwa domeny nie jest localhost (aby przetestować limit czasu, powinieneś użyć "YourComputerName" zamiast "localhost").
  2. Projekt jest kompilowany w trybie Release.
  3. <compilation debug="false">

Wtedy też, pomyśl o tym:

Wewnętrznie ASP.NET używa programatora, aby wywołać proces anulowanie żądania. Ten timer jest uruchamiany raz na 15 sekund, więc jeśli executionTimeout jest ustawiony na 3 sekundy, w rzeczywistości żądanie może przekroczyć limit czasu od 3 sekund do 18 sekund.

Po uruchomieniu stopera do sprawdzenia wszystkich żądań służy wątek z ThreadPool. Te, które przekroczyły limit czasu, są wysyłane pod numer ThreadAbortException, wywołując przerwanie w wątku wykonującym żądanie.

Uwaga: Należy pamiętać, że ThreadAbortException można obserwować tylko za pomocą kodu zarządzanego. Więc jeśli wątek wywołuje niektóre funkcje niezarządzane, wątek nie zostanie przerwany, a zatem limit czasu nie zostanie wymuszony, dopóki wykonanie nie powróci do zarządzanego świata. Może to być dowolna długość opóźnienia w zależności od tego, co robi niezarządzany kod.

Więcej: http://consultantpoint.wordpress.com/2012/09/07/how-the-execution-timeout-is-managed-in-asp-net/

Powiązane problemy