繁体   English   中英

IIS ShutDownTimeLimit触发Web API控制器操作

[英]IIS ShutDownTimeLimit Retriggering Web API Controller Action

大约两周前,我在IIS 8.0中部署了.NET Web API应用程序。

有一个很长的未决方法,它将异步处理大量事务,这可能需要大约20/30分钟的时间(客户端可以关闭应用程序并获得包含结果的电子邮件,或者等待屏幕显示直到该过程完成) 。

问题发生了,等待响应90秒后,该调用挂起,然后再次尝试执行相同的调用,因此,例如:我尝试处理15个项目(将它们插入DB),然后在90秒后,该过程挂起并开始再次(插入另外15条记录),最终整个过程挂起并且永远无法完成。

经过长时间的搜索和研究,我发现IIS的应用程序池ShutDownTimeLimit实际上正在终止我的呼叫,因为它是空闲的,并且在默认时间内(90秒)没有收到任何响应。 我增加了价值,这基本上解决了我的问题。

但是,我仍然不确定为什么要重新触发控制器上的操作,是否有人知道在检测到超出ShutDownTimeLimit后IIS是否实际上正在重试该调用?

任何帮助,将不胜感激。

PD:我的前端仅做1个确切的呼叫,因此没有多个呼叫。

即使超过了ShutDownTimeLimit,当关闭时间段足够长时,旧的工作进程也会正常关闭(完成请求处理)。 但是,当达到关闭时间限制时,如果有其他请求,则可以启动新的工作进程。 而且我不认为IIS将重试该调用(并且我已经对其进行了测试)。 因此,请确保没有来自前端或其他任何地方的呼叫。 顺便说一句,在ApiController内启动本质上长时间运行的即发即弃任务不是一个好主意,有关此问题的进一步阅读。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM