我尝试在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中运行吗?
答案 0 :(得分:7)
您需要完成以下任务:
<compilation debug="false">
然后,考虑一下:
内部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