IIS 是否会完成 Stop-WebSite 上的待处理请求?

IIS 是否会完成 Stop-WebSite 上的待处理请求?

假设我的 IIS8 托管网站已启动并运行,并且能够顺利处理请求。现在,从提升的 Powershell 运行:

Stop-WebSite <MyWebSite>

直到最近,我都认为 IIS 会停止处理新请求,完成当前请求,然后正常停止网站。但是,我怀疑情况并非总是如此:我的应用程序中有这样的代码路径:

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

偶尔,我的日志中会出现“Begin”条目,但没有匹配的“End”。Stop-WebSite 是否有可能强行杀死宿主进程?

答案1

运行这个简单的测试时:

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");
}

并在我调用该页面一秒后停止网站,我总是得到所有六个日志条目。

因此,一般来说,您(和我)最初的假设是正确的,运行过程在网站关闭之前就已经完成了。

某个请求可能无法完成,这是不可能的吗?如果它运行了几个小时怎么办?如果出现问题并且工作进程挂起怎么办?

我会寻找其他原因导致您的“Log(“End”);”不起作用。

相关内容