我正在尝试在ASP.NET MVC中使用执行超时。
我已经读过执行超时仅每15秒评估一次,并且仅在compilation debug="false"
,documentation时评估。
但是我似乎无法触发超时。
我有一个基本的MVC应用程序(在模板外)并进行了以下更改:
的web.config:
<compilation debug="false" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" executionTimeout="1" />
HomeController中:
public class HomeController : Controller
{
public ActionResult Index()
{
Thread.Sleep(20000);
throw new Exception("Shouldnt get here as its longer than the execution timeout +15s");
}
}
如果执行超时为1秒且在控制器中暂停20秒,它应该总是超过超时(最多16秒),但是当我运行应用程序时,我总是遇到异常。
如果线程超过超时,我需要做什么才能中止?
答案 0 :(得分:0)
在这种情况下睡眠不起作用。
你需要让它进行实际处理,就像for循环中的for循环一样。例如:
var t = 1;
for (int i = 0; i < 99999999; i++)
{
for (int i2 = 0; i2 < 99999999; i2++)
{
for (int i3 = 0; i3 < 99999999; i2++)
{
t = i + i2 - i3;
}
}
}