代码之家  ›  专栏  ›  技术社区  ›  iLemming

如何在本地IIS服务器上获取网站的物理路径(从桌面应用程序)

  •  19
  • iLemming  · 技术社区  · 14 年前

    %SystemDrive%\inetpub\wwwroot ?

    我想这和 Microsoft.Web.Administration.ServerManager 同学们,但我找不到办法。

    更新:我正在尝试从独立应用程序获取路径。不是ASP.NET web应用程序。

    3 回复  |  直到 14 年前
        1
  •  47
  •   erlando    14 年前

    要从独立应用程序中发现网站的物理路径,可以执行以下操作:

    // If IIS7
    // Add reference to Microsoft.Web.Administration in 
    // C:\windows\system32\inetsrv
    
    using Microsoft.Web.Administration;
    ...
    
    int iisNumber = 2;
    
    using(ServerManager serverManager = new ServerManager())
    {
      var site = serverManager.Sites.Where(s => s.Id == iisNumber).Single();
      var applicationRoot = 
               site.Applications.Where(a => a.Path == "/").Single();
      var virtualRoot = 
               applicationRoot.VirtualDirectories.Where(v => v.Path == "/").Single();
      Console.WriteLine(virtualRoot.PhysicalPath);
    }
    

    如果您使用的是IIS6(或IIS7的IIS6管理兼容层)

    // If IIS6
    // Add reference to System.DirectoryServices on .NET add ref tab
    
    using System.DirectoryServices;
    ...
    
    int iisNumber = 2;
    
    string metabasePath = String.Format("IIS://Localhost/W3SVC/{0}/root", iisNumber);
    using(DirectoryEntry de = new DirectoryEntry(metabasePath))
    {
      Console.WriteLine(de.Properties["Path"].Value);
    }
    

    这两个示例都演示了如何发现到 .

    要发现虚拟目录的路径,需要根据需要修改路径。

        2
  •  6
  •   Pranay Rana    14 年前

    Server.MapPath

    Request Object Paths Available

    物理应用程序路径 -返回此应用程序的虚拟根目录的本地文件系统路径。

    物理路径 c:\inetpub\wwwroot\webstore\admin\paths.aspx

    更新

    Modification of IIS Metabase in C# (适用于IIs 6.0、5.0)

        3
  •  0
  •   Artem Koshelev    14 年前

    Server.MapPath在共享宿主环境中不工作,在这种情况下,您可以使用 HostingEnvironment.MapPath