获取 IIS 默认安装目录

本文关键字:安装 默认 IIS 获取 | 更新日期: 2023-09-27 18:35:52

据我所知,默认情况下,所有 ASP.NET Web应用程序都放置在C:'inetpub文件夹中。但是有没有办法在 C# 代码中检索此文件夹?还是我只是硬编码?

附言。我需要它作为安装我的 Web 应用程序的 C# 程序的默认文件夹。

获取 IIS 默认安装目录

以下仅限于我的经验,所以......扬子晚报

我不相信有一个真正的默认位置。
IIS 将在 IIS 具有访问权限的任何文件夹中承载站点。 若要确定可能的文件夹,可以查询现有站点列表。


一切都没有丢失。 您可以找出这些网站的位置!

在新的 IIS 安装中,您可以找到在 IIS 安装期间创建的"默认站点"的目录。

请记住,无法保证该网站将保留在那里。 就个人而言,一旦我开始配置 IIS,我就会删除默认站点。


在 IIS 7+ 中

可以在 IIS 的配置文件夹下的 XML 文件中找到站点位置。

%系统

根%''系统32''inetsrv''config''

在 XML 文件 applicationHost.config 中,请参阅

XML 节点路径为:/configuration/system.applicationHost/sites/

从那里,您可以循环访问每个子节点以查看各个文件夹位置。 例如,默认站点可能会列为:

child node:  site name="Default Web Site" id="1"

.Net 方式

另一个技巧是直接通过.Net查询IIS。

这是 API 文档

这里有一些放在后口袋里的方法:

    private static Site GetSite(string siteName)
    {
        Site site = (from s in (new ServerManager().Sites) where s.Name == siteName select s).FirstOrDefault();
        if (site == null)
            throw new Exception("The Web Site Name '"" + siteName + "'" could not be found in IIS!");
        return site;
    }
    private static ApplicationCollection GetApplications(Site site)
    {
        //HttpContext.Current.Trace.Warn("Site ID3: " + site + "/n");
        ApplicationCollection appColl = site.Applications;
        return appColl;
    }
    private static String GetHostName(Site site)
    {
        BindingCollection bindings = site.Bindings;
        String bind = null;
        foreach (Binding binding in bindings)
            if (binding.Host != null)
                return binding.ToString();
        return bind;
    }

更新!虽然我不能保证安装后此位置会保留,但您也可以查询注册表:

查看 HKEY_LOCAL_MACHINE''SOFTWARE''Wow6432Node''Microsoft''InetStp''pathWWWRoot''


我将其作为单独的答案发布,因为它是一个完全不同的解决方案:

不要担心其他应用程序的安装位置!

    使用 Web
  1. 部署(如果你使用 Web 发布获得创意,甚至可以设置特定的文件夹权限)

  2. 如果您需要务实地执行此操作/无法访问那些漂亮的工具......
    选择一个位置并设置文件夹的权限,以确保 IIS 能够访问它。
    然后使用 IIS API 注册新站点。
    哦,您还需要检查这些应用程序池权限