c# - 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 的查询。我们需要在某个超时后终止请求,即使一切都按计划进行并且请求正常工作,但我们不能再等待了。
解决方案
推荐阅读
- java - 使用 Groovy 集合精确匹配字符串格式
- python - 如何在文件上使用 write() 方法而不替换字符?
- c - Codeforces:“B. 8 Queens, Again”
- dns - DNS 区域文件位于何处?
- android - 在 android/Xamarin.Android 中单击通知时切换到正在运行的活动
- java - 使用 Java 流从集合中获取两个最小对象
- node.js - 当值不在数组中时,猫鼬 findOneAndUpdate
- makefile - 在 CMAKE for Protobuf 中使用 distcc 时未定义的引用
- java - 具有连接表的单个实体上的多对多
- arrays - JSONata 按数组排序/排序