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

发布于 2024-09-04 20:27:00 字数 236 浏览 7 评论 0原文

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

是否可以查看应用程序池中是否有网站?我只想知道它是否为空。

谢谢

We're building an installation tool which can install applications by a configuration file. There is a lot of IIS involved and we mostly use WMI for the job. Recently we discovered that 2 of the applications use the same website and application pool. I can check the website to see if it contains any VDirs and delete it (while uninstalling) if its empty. Now I want to do the same thing with the application pool: as long as it contains any websites I want to skip the uninstallationtask and let the other application's uninstall handle it.

Is it possible to see if there are any websites in an application pool? All I want to know is if its empty or not.

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

洛阳烟雨空心柳 2024-09-11 20:27:00

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

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

当然,您可以根据您的需要调整行为。

I think the following code can help you:

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

Of course, you can adjust the behavior to your needs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文