检查IIS应用程序是否正在运行而不会导致它运行
问题描述:
我正在编写一个Web监视器应用程序,该应用程序提供了有关IIS服务器上所有应用程序池/应用程序的信息。我在C#中寻找一种方法来以编程方式检查IIS应用程序是否正在运行,而不会导致它运行,如果它不是。检查IIS应用程序是否正在运行而不会导致它运行
这里是我发现......
- 应用程序正在运行,也有积极的一个或多个会话。
- 所有会话中断...应用程序仍在“运行”,应用程序池工作进程正在运行。
- 在由IIS确定的某个点上,Application_End终于被执行了......但是,应用程序池工作进程仍在运行。
- 20分钟后,应用程序池工作进程最终由于不活动而关闭。
在#3和#4之间我有麻烦。该应用程序已结束,但如果我尝试向应用程序发送Http请求,它将自动启动。我正在寻找一种编程方式来确定应用程序是否已结束(而工作进程仍处于活动状态,正在等待关闭)而无需重新启动应用程序。
我可以尝试提供更多的细节,如果你不确定我在说什么。
问候, 杰里米
答
微软已经创建了一个VBScript文件来识别IIS应用程序池(通过进程ID)。如果你在谷歌搜索“iisapp.vbs”,它应该指向你正确的方向。
注:我不是100%肯定它会与Windows Server 2008的工作,但与2003年
答
在IIS7工作,你可以使用APPCMD程序池/?看看有什么可能。
答
我发现这个MSDN上
public bool CheckIISRunning()
{
ServiceController controller = new ServiceController("W3SVC");
return controller.Status == ServiceControllerStatus.Running;
}
对于这个工作,你需要有 System.ServiceProcess加入作为参考。
和IIS 6.0 ?? – Kiquenet 2011-02-16 12:23:19