我尝试在web.config中为asp.net mvc应用程序设置executionTimeout.
<location path="Home/Index">
<system.web>
<httpRuntime executionTimeout="5"/>
</system.web>
</location>
Run Code Online (Sandbox Code Playgroud)
任何在Index动作中使用Thread.sleep
public ActionResult Index()
{
Thread.Sleep(30000);
return View();
}
Run Code Online (Sandbox Code Playgroud)
另外,我将complilation的调试设置为"false".在操作休眠约30秒后,"请求超时"异常不会抛出并且视图已成功呈现.
任何人都知道如何使executionTimeout在asp.net mvc中工作?
您需要满足以下条件:
<compilation debug="false">然后,想一想:
ASP.NET内部使用Timer来调用请求取消过程.此计时器每15秒触发一次,因此如果executionTimeout设置为3秒,实际上请求可以在3秒到18秒之间的任何时间超时.
当计时器被触发时,ThreadPool中的一个线程用于检查所有请求.超时的是ThreadAbortException通过在执行请求的线程上调用Abort来发送的.
注意:请记住,ThreadAbortException只能通过托管代码来观察.因此,如果线程正在调用某些非托管函数,则线程不会被中止,因此在执行返回托管世界之前不会强制执行超时.这可以是任意长度的延迟,具体取决于那些非托管代码的作用.
阅读更多:http://consultantpoint.wordpress.com/2012/09/07/how-the-execution-timeout-is-managed-in-asp-net/
小智 1
如果您将 web.config 设置为 debug="true" 它将忽略您设置的值: http://msdn.microsoft.com/en-us/library/e1f13641.aspx
| 归档时间: |
|
| 查看次数: |
3386 次 |
| 最近记录: |