app_offline.htm、停止IIS网站和停止应用程序池如何影响当前运行的线程



如果I:

  • 在网站根目录中放置app_offline.html
  • 停止IIS 7.5站点
  • 停止IIS 7.5应用程序池

当前正在运行的线程(在所有三种情况下((包括后台线程(会发生什么?它们是立即终止,还是允许正在运行的项目结束?

感谢

Andrew

通过添加app_offline.htm应用程序发送Application_End,在该函数返回后,程序的其余线程将被终止。等待Application_End返回的最长等待时间在池设置中设置。

如果停止已满的池,则此池下的所有站点都将遵循相同的过程。如果只打开app_offline.htm,则仅此网站受影响。

为了避免线程因此关闭而终止,请在Application_End 上设置等待状态

void Application_End(object sender, EventArgs e) 
{
    // This is a custom function that you must make and
    //   check your threads in the program
    MyTheadClass.WaitForAllMyThreadsToExist();
    // after this function exit the rest of the threads are killed.
}

还有一个注意事项

在Application_End上等待线程从等待状态(可能是互斥体(退出的所有时间里,站点不再接受web连接,而且似乎没有响应。因此,当您收到此消息时,您应该让线程尽快退出。

只需注意文件名必须为app_offline.htm。使用app_offline.html将不起作用!

当app_offline.html被放入时:

根据ScottGu的这篇文章,它说应用程序域已卸载。基于本文,当卸载应用程序域并抛出ThreadAbortException时,所有后台线程都将停止。

我不确定是否要停止网站,但停止应用程序池也应该有同样的效果。

最新更新