2010-10-23 82 views
7

我嘗試在web.config中爲asp.net mvc應用程序設置executionTimeout。 executionTimeout無法在asp.net上工作mvc

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

任何使用的Thread.sleep在索引操作

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

我設置complilation的調試,以 「假」。 行動後大約30秒睡眠並且「請求超時」異常不會被拋出並且視圖已成功呈現。

任何一個知道如何使executionTimeout在asp.net mvc中工作?

+0

可能重複的[ASP.NET MVC和的httpRuntime executionTimeout](http://stackoverflow.com/questions/492346/asp-net-mvc-and-httpruntime-executiontimeout) – 2010-10-23 09:48:31

回答

4

您需要滿足以下幾點:

  1. 的域名是不是localhost (爲了測試超時你應該使用「YourComputerName」而不是「localhost」)。
  2. 項目以發佈模式編譯。
  3. <compilation debug="false">

然後也,想想這個:

內部ASP.NET使用計時器來調用請求取消過程。此計時器每15秒啓動一次,因此如果executionTimeout設置爲3秒,則實際上請求可能會在3秒到18秒之間的任何時間超時。

當計時器被觸發時,ThreadPool中的一個線程用於檢查所有的請求。通過在執行請求的線程上調用Abort來發送超時的消息。

注意:請記住,ThreadAbortException只能由託管代碼觀察。因此,如果線程正在調用某些非託管函數,則線程不會中止,因此超時將不會執行,直到執行返回到託管的世界。這可以是任意長度的延遲,具體取決於那些非託管代碼的作用。

瞭解更多:http://consultantpoint.wordpress.com/2012/09/07/how-the-execution-timeout-is-managed-in-asp-net/

相關問題