繁体   English   中英

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

[英]How to get website's physical path on local IIS server? (from a desktop app)

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

我想这与Microsoft.Web.Administration.ServerManager类有关,但是我找不到办法。

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

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

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

如果您使用的是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);
}

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

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

Server.MapPath

要么

请求可用的对象路径

RequestObject属性

PhysicalApplicationPath-返回此应用程序的虚拟根目录的本地文件系统路径。 c:\\ inetpub \\ wwwroot \\ webstore

PhysicalPath-将本地文件系统路径返​​回到当前脚本或路径。 c:\\ inetpub \\ wwwroot \\ webstore \\ admin \\ paths.aspx

更新

要从Windows应用程序访问iis,请阅读本文: 修改C#中的IIS元数据库 (对于IIs 6.0、5.0)

Server.MapPath在共享托管环境中不起作用,在这种情况下,您可以使用HostingEnvironment.MapPath

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM