2010-10-23 9 views
7

Ich habe versucht, die ExecutionTimeout in web.config für eine asp.net mvc-Anwendung festlegen. ExecutionTimeout funktioniert nicht auf asp.net mvc

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

gebrauchte die Thread.sleep in Index Aktion

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

auch, i Compilation Debug auf "false" gesetzt. nach der Aktion schlafen etwa 30 Sekunden und die "Anfrage Timeout" Ausnahme nicht auswirft und die Ansicht wurde erfolgreich gerendert.

jemand weiß, wie die Ausführung von Timeout in asp.net mvc funktioniert?

+0

möglich Duplikat [ASP.NET MVC und Httpruntime executionTimeout] (http://stackoverflow.com/questions/492346/asp-net-mvc-and-httpruntime-executiontimeout) –

Antwort

4

Sie müssen Folgendes erfüllen:

  1. Domain Name localhost nicht (Um das Zeitlimit zu testen, sollten Sie "YourComputerName" anstelle von "localhost" verwenden).
  2. Das Projekt wird im Freigabemodus kompiliert.
  3. <compilation debug="false">

Dann auch, darüber nachzudenken:

Intern ASP.NET verwendet ein Timer die Anforderung Abbruch Prozess aufzurufen. Dieser Timer wird einmal alle 15 Sekunden ausgelöst. Wenn also executionTimeout auf 3 Sekunden eingestellt ist, kann die Anforderung in Wirklichkeit zwischen 3 Sekunden und 18 Sekunden ablaufen.

Wenn der Timer ausgelöst wird, wird ein Thread aus dem ThreadPool verwendet, um alle Anfragen zu überprüfen. Diejenigen, die das Zeitlimit überschritten haben, erhalten eine ThreadAbortException, indem sie Abort für den Thread aufrufen, der die Anfrage ausführt.

Hinweis: Beachten Sie, dass ThreadAbortException nur durch verwalteten Code beobachtet werden kann. Wenn also Thread einige nicht verwaltete Funktionen aufruft, wird der Thread nicht abgebrochen, und daher wird das Zeitlimit nicht erzwungen, bis die Ausführung zur verwalteten Welt zurückkehrt. Je nachdem, was dieser nicht verwaltete Code tut, kann dies eine willkürliche Verzögerung sein.

Lesen Sie mehr: http://consultantpoint.wordpress.com/2012/09/07/how-the-execution-timeout-is-managed-in-asp-net/

Verwandte Themen