首页 > 解决方案 > IIS 8.5 executionTimeout 不起作用 MVC5

问题描述

环境: IIS 8.5 .NET Framework 4.7.2 ASP MVC5

目标: 在指定超时后丢弃传入 IIS 的请求。

我们尝试了什么:

设置 executionTimeout="10":

网络配置:

<system.web>
<compilation explicit="true" optimizeCompilations="true" targetFramework="4.7.2" debug="false">
...
</compilation>
<httpRuntime executionTimeout="10" maxRequestLength="53477376" maxWaitChangeNotification="20" shutdownTimeout="30" waitChangeNotification="20" maxQueryStringLength="4096" targetFramework="4.7.2" />
...
</system.web>

我们预计到此端点的请求将在 10 秒内关闭(我们在此处检查 - IIS 管理器 - 工作进程 - 请求)

piblic async Get()
{
    await Task.Delay(4000);
}

但请求仍会执行 4 分钟以上,并且不会在 executionTimeout = "10" (10sec) 后按预期停止。

为什么需要这个: 问题是我们的一些非关键请求处理时间过长,占用了IIS上的请求队列。这可能是对 MS SQL 的查询(由于可能存在锁,它们需要很长时间来处理),或者是对外部 API 的查询。我们需要在某个超时后终止请求,即使一切都按计划进行并且请求正常工作,但我们不能再等待了。

标签: c#iisasp.net-mvc-5iis-8.5

解决方案


推荐阅读