C# 中的应用程序池状态
Application Pool Status in C#
我正在尝试从 Web 应用程序中获取应用程序池状态。我感兴趣的应用程序池是“ABC”,但是当我按名称检查它时,我什么也没得到,当我按名称检查可用池时(即 manager.ApplicationPools),它们显示为 Clr4ClassicAppPool、Clr4IntegratedAppPool,...所以我找不到匹配项。
这是我正在使用的
public static int GetAppPoolStatus(string sAppPoolName)
{
int iRet = -1;
try
{
using (ServerManager manager = new ServerManager())
{
ApplicationPool appPool = manager.ApplicationPools.FirstOrDefault(ap => ap.Name == sAppPoolName);
if (appPool != null)
{
//Get the current state of the app pool
iRet = (int)appPool.State; // 0: Starting, 1: Started, 2: Stopping, 3: Stopped
}
else
{
}
}
}
catch (Exception ex)
{ }
return iRet;
}
GAC 版本 (7.9.0.0) 是 IIS Express 的一部分,如果您的项目文件未明确指向 %SystemRoot%\system32\inetsrv\Microsoft.Web.Administration.dll
.
,则在编译您的项目时由 MSBuild 解析
最终解决方案(如果不卸载 IIS Express)是显式添加对 %SystemRoot%\system32\inetsrv\Microsoft.Web.Administration.dll
的引用,以便在编译时使用正确的元数据。它有副作用,但仍然是一种可靠的方法。在运行时,使用程序集重定向来坚持版本 7.0.0.0
.
可以在 this post
中找到更多提示
我正在尝试从 Web 应用程序中获取应用程序池状态。我感兴趣的应用程序池是“ABC”,但是当我按名称检查它时,我什么也没得到,当我按名称检查可用池时(即 manager.ApplicationPools),它们显示为 Clr4ClassicAppPool、Clr4IntegratedAppPool,...所以我找不到匹配项。
这是我正在使用的
public static int GetAppPoolStatus(string sAppPoolName)
{
int iRet = -1;
try
{
using (ServerManager manager = new ServerManager())
{
ApplicationPool appPool = manager.ApplicationPools.FirstOrDefault(ap => ap.Name == sAppPoolName);
if (appPool != null)
{
//Get the current state of the app pool
iRet = (int)appPool.State; // 0: Starting, 1: Started, 2: Stopping, 3: Stopped
}
else
{
}
}
}
catch (Exception ex)
{ }
return iRet;
}
GAC 版本 (7.9.0.0) 是 IIS Express 的一部分,如果您的项目文件未明确指向 %SystemRoot%\system32\inetsrv\Microsoft.Web.Administration.dll
.
最终解决方案(如果不卸载 IIS Express)是显式添加对 %SystemRoot%\system32\inetsrv\Microsoft.Web.Administration.dll
的引用,以便在编译时使用正确的元数据。它有副作用,但仍然是一种可靠的方法。在运行时,使用程序集重定向来坚持版本 7.0.0.0
.
可以在 this post
中找到更多提示