簡體   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