2010-07-12 39 views
18

如何獲得通常看起來像%SystemDrive%\inetpub\wwwroot的路徑?如何在本地IIS服務器上獲取網站的物理路徑? (從桌面應用程序)

我想這跟Microsoft.Web.Administration.ServerManager類有關,但是我找不到方法。

更新:我試圖從獨立的應用程序獲取路徑。不是一個ASP.NET Web應用程序。

+0

您是否正在嘗試從應用程序本身(即ASP.NET)或某種獨立應用程序中執行此操作? – LukeH 2010-07-12 13:18:16

+0

從獨立的應用程序 – Agzam 2010-07-12 13:24:49

+0

它更好地問你問題的所有信息正確,並標記爲你更新的粗體,因爲我在我的答案 – 2010-07-12 18:49:52

回答

37

要發現從一個獨立的應用程序網站的物理路徑,你可以做到以下幾點:

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

這兩個示例都演示瞭如何發現網站的根目錄路徑

要發現虛擬目錄的路徑,您需要根據需要修改路徑。

+0

謝謝..這就是我正在尋找,我猜... – Agzam 2010-07-12 17:13:27

+1

如果您的「應用程序」在SQL CLR中運行,這將無法正常工作,因爲既不是Microsoft.Web 。行政。DLL或其無盡的依賴鏈都已在SQL Server中進行過測試。是否有一些可供選擇的,更基本的查找Web應用程序路徑的方法,或者某些其他功能較少的DLL? – Triynko 2013-08-01 01:00:21

+0

如何得到,Microsoft.Web.Administration ..我有Win7,我沒有在我的機器上的任何地方的DLL。 Microsoft.Web.Administration.dll。我確實找到了Microsoft.Web.Administration.Resource.dll,但那不是同一個文件。 – Switch 2013-08-29 17:57:23

6

Server.MapPath

Request Object Paths Available

RequestObject物業

PhysicalApplicationPath - 返回本地文件系統爲這個應用程序的虛擬根目錄的路徑。 c:\ inetpub \ wwwroot \ webstore

PhysicalPath - 將本地文件系統路徑返​​回到當前腳本或路徑。 C:\的Inetpub \ wwwroot的\網絡存儲器\ ADMIN \ paths.aspx

更新

從Windows應用程序訪問IIS去通過這篇文章:Modification of IIS Metabase in C#(對於IIS 6.0,5.0)

+0

實際路徑我實際上試圖從獨立的wpf應用程序獲取路徑。不是一個Web應用程序。有什麼辦法可以使用Microsoft.Web.Administration類嗎? – Agzam 2010-07-12 13:34:54

+0

它更好地問你問題的所有信息正確,並標記爲你更新的粗體,因爲我在我的回答中做過 – 2010-07-12 18:50:11

+1

雖然Microsoft.Web.Administration.ServerManager有點不妥? :) – Kev 2010-07-12 19:20:03

相關問題