Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IIS ShutDownTimeLimit重新触发Web API控制器操作_C#_Asp.net_Iis_Asp.net Web Api_Iis 8 - Fatal编程技术网

C# IIS ShutDownTimeLimit重新触发Web API控制器操作

C# IIS ShutDownTimeLimit重新触发Web API控制器操作,c#,asp.net,iis,asp.net-web-api,iis-8,C#,Asp.net,Iis,Asp.net Web Api,Iis 8,大约两周前,我在IIS 8.0中部署了一个.NET Web API应用程序 有一个长挂起的方法将异步处理大量内容,它可能需要大约20/30分钟(客户机可以关闭应用程序并获取包含结果的电子邮件,或者在屏幕上等待,直到处理完成) 问题发生了,在等待响应90秒后,调用挂起并重试再次执行相同的调用,因此,例如:我尝试处理15个项目(在DB上插入它们),90秒后,进程挂起并再次启动(插入另15条记录),最终整个过程挂起,永远不会结束 经过长时间的谷歌搜索和研究,我发现IIS的应用程序池ShutDownTi

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

有一个长挂起的方法将异步处理大量内容,它可能需要大约20/30分钟(客户机可以关闭应用程序并获取包含结果的电子邮件,或者在屏幕上等待,直到处理完成)

问题发生了,在等待响应90秒后,调用挂起并重试再次执行相同的调用,因此,例如:我尝试处理15个项目(在DB上插入它们),90秒后,进程挂起并再次启动(插入另15条记录),最终整个过程挂起,永远不会结束

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

然而,我仍然不知道为什么我的控制器上的操作会被重新触发,你们中的任何人是否知道,在检测到关闭时间限制被超过后,IIS是否真的在重新尝试进行调用

任何帮助都将不胜感激


PD:我的前端只进行了一次精确呼叫,没有多个呼叫从它传入。

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

我也遇到了同样的问题。你知道控制器被重新触发的原因了吗?嗨@CBC\n我为迟来的回复道歉,基本上,我的问题是关机时间限制太低,显然Chrome能够管理这种情况,因为它建立了某种套接字并不断ping以知道呼叫仍然有效。然而,对于IE和Firefox,我必须将ShutDownTimeLimit增加到尽可能高的值,以避免控制器方法的重新触发。