如何在网站内获取网站应用程序名称

本文关键字:网站 应用程序 获取 | 更新日期: 2023-09-27 18:37:10

我希望能够检查现有网站中是否存在应用程序,但我没有找到任何东西。目前,我有一个安装程序项目,该项目可以从用户那里获取现有网站名称的输入。我使用它来检查 IIS 中当前存在的站点,如果是这样,我想搜索现有应用程序以查看是否存在特定的 1。这是我所拥有的:

private void CheckWebsiteApps()
{
    SiteCollection sites = null;
    try
    {
        //Check website exists
        sites = mgr.Sites;
        foreach (Site s in sites)
        {
            if (!string.IsNullOrEmpty(s.Name))
            {
                if (string.Compare(s.Name, "mysite", true) == 0)
                {
                    //Check if my app exists in the website
                    ApplicationCollection apps = s.Applications;
                    foreach (Microsoft.Web.Administration.Application app in apps)
                    {
                        //Want to do this
                        //if (app.Name == "MyApp")
                        //{ 
                        //    Do Something
                        //}
                    }
                }
            }
        }
    }
    catch
    {
        throw new InstallException("Can't determine if site already exists.");
    }
}

显然是应用程序。名称不存在,那么我该怎么做才能得到这个?

如何在网站内获取网站应用程序名称

您可以使用

Microsoft.Web.Administration 和 Microsoft.Web.Management API for IIS 来执行此操作。 但是它们不在 GAC 中,您必须从 inetsrv 文件夹中引用它们。 在我的机器上,它们位于...

  1. C:''Windows''System32''inetsrv''Microsoft.Web.Administration.dll
  2. C:''Windows''System32''inetsrv''Microsoft.Web.Management.dll

下面是枚举它们的一些示例代码,

class Program
{
    static void Main(string[] args)
    {
        ServerManager serverManager = new ServerManager();
        foreach (var site in serverManager.Sites)
        {
            Console.WriteLine("Site -> " + site.Name);
            foreach (var application in site.Applications)
            {
                Console.WriteLine("  Application-> " + application.Path);
            }
        }

        Console.WriteLine("Press any key...");
        Console.ReadKey(true);
    }
}

跟进:

应用程序没有名称,只有根站点在 IIS 中具有名称。 应用程序只有一个路径(因为它们是站点的子级)。 如果路径为"/",则应用程序是站点的根应用程序。 如果路径不是/,那么它是站点的 2nd+ 子应用程序。 因此,您需要使用Application.Path来执行所需的操作。