2010-10-23 79 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/

相关问题