如何获得通常看起来像%SystemDrive%\inetpub\wwwroot
的路径?
我想这与Microsoft.Web.Administration.ServerManager
课程有关,但我找不到办法。
更新:我正试图从独立应用程序获取路径。不是ASP.NET Web应用程序。
答案 0 :(得分:39)
要从独立应用程序中发现网站的物理路径,您可以执行以下操作:
// 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);
}
这两个示例演示了如何发现网站根目录的路径。
要发现虚拟目录的路径,您需要根据需要修改路径。
答案 1 :(得分:6)
或
Request Object Paths Available
RequestObject属性
PhysicalApplicationPath - 返回此应用的虚拟根目录的本地文件系统路径。 c:\ inetpub \ wwwroot \ webstore
PhysicalPath - 返回当前脚本或路径的本地文件系统路径。 c:\ inetpub \ wwwroot \ webstore \ admin \ paths.aspx
<强>更新强>
要从Windows应用程序访问iis,请阅读以下文章:Modification of IIS Metabase in C#(适用于IIs 6.0,5.0)
答案 2 :(得分:0)
Server.MapPath无法在共享托管环境中运行,在这种情况下,您可以使用HostingEnvironment.MapPath。