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

iLe*_*ing 21 c# iis

如何获得通常看起来的路径 %SystemDrive%\inetpub\wwwroot

我想这与Microsoft.Web.Administration.ServerManager课堂有关,但我找不到办法.

更新:我正试图从独立应用程序获取路径.不是ASP.NET Web应用程序.

Kev*_*Kev 43

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

// 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);
}
Run Code Online (Sandbox Code Playgroud)

如果您使用的是IIS 6(或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);
}
Run Code Online (Sandbox Code Playgroud)

这两个示例都演示了如何发现网站根目录的路径.

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


Pra*_*ana 6

使用Server.Mappath

要么

请求对象路径可用

RequestObject属性

PhysicalApplicationPath - 返回此应用程序的虚拟根目录的本地文件系统路径.C:\的Inetpub\wwwroot的\网络存储器

PhysicalPath - 返回当前脚本或路径的本地文件系统路径.C:\的Inetpub\wwwroot的\网络存储器\ ADMIN\paths.aspx

更新

要从Windows应用程序访问iis,请阅读以下文章:在C#中修改IIS元数据库(适用于IIs 6.0,5.0)