我尝试在 web.config 中为 asp.net mvc 应用程序设置executionTimeout。
<location path="Home/Index">
<system.web>
<httpRuntime executionTimeout="5"/>
</system.web>
</location>
任何使用过的Thread.Sleep
在指数行动中
public ActionResult Index()
{
Thread.Sleep(30000);
return View();
}
also, 我将编译的调试设置为“false”。
操作休眠约 30 秒后,“请求超时”异常不会抛出,视图已成功渲染。
有人知道如何使executionTimeout 在 asp.net mvc 中工作吗?
您需要满足以下条件:
- 域名不是 localhost(要测试超时,您应该使用“YourComputerName”而不是“localhost”)。
- 项目以Release模式编译。
<compilation debug="false">
然后,还想一下:
ASP.NET 在内部使用计时器来调用请求取消过程。该计时器每 15 秒触发一次,因此如果executionTimeout
设置为 3 秒,实际上请求可以在 3 秒到 18 秒之间的任何时间超时。
当计时器被触发时,线程池中的线程将用于检查所有请求。那些已经超时的会被发送ThreadAbortException
通过在执行请求的线程上调用 Abort。
注意:请记住ThreadAbortException
只能通过托管代码观察。因此,如果您的线程正在调用某些非托管函数,则该线程将不会中止,因此不会强制执行超时,直到执行返回到托管世界。这可以是任意长度的延迟,具体取决于这些非托管代码的作用。
阅读更多:http://consultantpoint.wordpress.com/2012/09/07/how-the-execution-timeout-is-management-in-asp-net/ http://consultantpoint.wordpress.com/2012/09/07/how-the-execution-timeout-is-managed-in-asp-net/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)