executionTimeout无法在asp.net mvc上运行

时间:2010-10-23 03:30:52

标签: asp.net-mvc

我尝试在web.config中为asp.net mvc应用程序设置executionTimeout。

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

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

任何使用了Index动作中的Thread.sleep

另外,我将complilation的调试设置为“false”。  在操作休眠约30秒后,“请求超时”异常不会抛出并且视图已成功呈现。

任何人都知道如何让executionTimeout在asp.net mvc中运行吗?

2 个答案:

答案 0 :(得分:7)

您需要完成以下任务:

  1. 域名不是localhost(要测试超时,您应该使用“YourComputerName”而不是“localhost”)。
  2. 项目以发布模式编译。
  3. <compilation debug="false">
  4. 然后,考虑一下:

    内部ASP.NET使用Timer来调用请求取消过程。此计时器每15秒触发一次,因此如果executionTimeout设置为3秒,实际上请求可以在3秒到18秒之间的任何时间超时。

    当触发计时器时,ThreadPool中的一个线程用于检查所有请求。超时的那些通过在执行请求的线程上调用Abort来发送ThreadAbortException

    注意:请注意,ThreadAbortException只能通过托管代码来观察。因此,如果线程正在调用某些非托管函数,则线程不会被中止,因此在执行返回托管世界之前不会强制执行超时。这可能是任意长度的延迟,具体取决于那些非托管代码的作用。

    了解详情:http://consultantpoint.wordpress.com/2012/09/07/how-the-execution-timeout-is-managed-in-asp-net/

答案 1 :(得分:1)

如果您将web.config设置为debug =“true”,它将忽略您设置的值: http://msdn.microsoft.com/en-us/library/e1f13641.aspx