如何獲得通常看起來像%SystemDrive%\inetpub\wwwroot
的路徑?如何在本地IIS服務器上獲取網站的物理路徑? (從桌面應用程序)
我想這跟Microsoft.Web.Administration.ServerManager
類有關,但是我找不到方法。
更新:我試圖從獨立的應用程序獲取路徑。不是一個ASP.NET Web應用程序。
如何獲得通常看起來像%SystemDrive%\inetpub\wwwroot
的路徑?如何在本地IIS服務器上獲取網站的物理路徑? (從桌面應用程序)
我想這跟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);
}
這兩個示例都演示瞭如何發現網站的根目錄路徑。
要發現虛擬目錄的路徑,您需要根據需要修改路徑。
謝謝..這就是我正在尋找,我猜... – Agzam 2010-07-12 17:13:27
如果您的「應用程序」在SQL CLR中運行,這將無法正常工作,因爲既不是Microsoft.Web 。行政。DLL或其無盡的依賴鏈都已在SQL Server中進行過測試。是否有一些可供選擇的,更基本的查找Web應用程序路徑的方法,或者某些其他功能較少的DLL? – Triynko 2013-08-01 01:00:21
如何得到,Microsoft.Web.Administration ..我有Win7,我沒有在我的機器上的任何地方的DLL。 Microsoft.Web.Administration.dll。我確實找到了Microsoft.Web.Administration.Resource.dll,但那不是同一個文件。 – Switch 2013-08-29 17:57:23
或
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)
Server.MapPath不能在共享主機環境中工作,在這種情況下,您可以使用HostingEnvironment.MapPath。
您是否正在嘗試從應用程序本身(即ASP.NET)或某種獨立應用程序中執行此操作? – LukeH 2010-07-12 13:18:16
從獨立的應用程序 – Agzam 2010-07-12 13:24:49
它更好地問你問題的所有信息正確,並標記爲你更新的粗體,因爲我在我的答案 – 2010-07-12 18:49:52