IIS会在Stop-WebSite上完成待处理的请求吗?

让我们说,我的IIS8托pipe的网站已经启动并运行,并愉快地提供服务请求。 现在,从一个高架Powershell,我运行:

Stop-WebSite <MyWebSite> 

直到最近我的假设是,IIS将停止提供新的请求,完成当前的请求,然后优雅地停止该网站。 不过,我怀疑这并非总是如此:我的应用程序中有一个代码path,如下所示:

 Log("Begin"); try { DoSomething(); // can take a few seconds } finally { Log("End"); } 

有时,我的日志中会有“开始”条目而没有匹配“结束”。 任何机会Stop-WebSite 强行杀死主机进程?

运行这个简单的testing时:

 int ms = 2000; try { Log("1"); Thread.Sleep(ms); Log("2"); Thread.Sleep(ms); Log("3"); Thread.Sleep(ms); Log("4"); Thread.Sleep(ms); Log("5"); } finally { Log("6"); } 

并在我打电话给网页后停止网站,我总是得到所有六个日志条目。

所以,一般来说你的(和我的)原来的假设是正确的,运行过程在站点closures之前就完成了。

某个请求可能无法完成吗? 如果运行几个小时呢? 如果出现错误,工作进程挂起,怎么办?

我会寻找其他原因为什么你的“日志(”结束“);” 不起作用。