检查IIS应用程序池是否为空(C#/IIS6)

检查IIS应用程序池是否为空(C#/IIS6),c#,.net,iis,wmi,C#,.net,Iis,Wmi,我们正在构建一个安装工具,它可以通过配置文件安装应用程序。有很多IIS参与,我们主要使用WMI的工作。最近,我们发现其中两个应用程序使用相同的网站和应用程序池。我可以检查该网站,看看它是否包含任何VDIR,如果它是空的,则删除它(卸载时)。现在我想对应用程序池做同样的事情:只要它包含任何网站,我就想跳过卸载任务,让其他应用程序的卸载来处理它 是否可以查看应用程序池中是否有任何网站?我只想知道它是不是空的 谢谢我认为以下代码可以帮助您: static bool AppPoolIsShared(

我们正在构建一个安装工具,它可以通过配置文件安装应用程序。有很多IIS参与,我们主要使用WMI的工作。最近,我们发现其中两个应用程序使用相同的网站和应用程序池。我可以检查该网站,看看它是否包含任何VDIR,如果它是空的,则删除它(卸载时)。现在我想对应用程序池做同样的事情:只要它包含任何网站,我就想跳过卸载任务,让其他应用程序的卸载来处理它

是否可以查看应用程序池中是否有任何网站?我只想知道它是不是空的


谢谢

我认为以下代码可以帮助您:

  static bool AppPoolIsShared(string appPoolName)
  {
     DirectoryEntry appPool = new DirectoryEntry(string.Format("IIS://localhost/w3svc/AppPools/{0}", appPoolName));
     if (appPool != null)
     {
        try
        {
           object[] appsInPool = (object[])appPool.Invoke("EnumAppsInPool", null);
           if (appsInPool != null && appsInPool.Length > 1)
           {
              return true;
           }
        }
        catch
        {
           return true;
        }
     }

     return false;
  }
当然,您可以根据自己的需要调整行为