如何解決相對於ASP.NET MVC 4應用程序根目錄的路徑?也就是說,我想從控制器操作中打開屬於應用程序的文件,如~/Data/data.html
。這些路徑通常在Web.config
中指定。如何解決相對於ASP.NET MVC 4應用程序根目錄的路徑?
編輯:
通過「解析」我的意思是相對於應用程序的根目錄的路徑轉換爲絕對路徑,.e.g。 ~/Data/data.html
→ C:\App\Data\Data.html
。
如何解決相對於ASP.NET MVC 4應用程序根目錄的路徑?也就是說,我想從控制器操作中打開屬於應用程序的文件,如~/Data/data.html
。這些路徑通常在Web.config
中指定。如何解決相對於ASP.NET MVC 4應用程序根目錄的路徑?
編輯:
通過「解析」我的意思是相對於應用程序的根目錄的路徑轉換爲絕對路徑,.e.g。 ~/Data/data.html
→ C:\App\Data\Data.html
。
得到絕對路徑使用這樣的:
String path = HttpContext.Current.Server.MapPath("~/Data/data.html");
編輯:
爲了得到控制器的上下文從上面的行刪除.Current
。通過使用HttpContext
本身,測試更容易,因爲它基於Controller的上下文,因此更加本地化。
我現在意識到,我不喜歡怎麼Server.MapPath
作品(內部最終調用HostingEnvironment.MapPath
)所以我現在推薦給經常使用HostingEnvironment.MapPath
,因爲它的靜態,而不是依賴於上下文當然,除非你想要的......
在操作,你可以撥打:
this.Request.PhysicalPath
,在引用返回到當前控制器的物理路徑。如果你只需要根路徑電話:
this.Request.PhysicalApplicationPath
我覺得這是非常有用的代碼,當我需要一個控制器,外部的路徑,例如當我在Global.asax.cs中初始化組件:
HostingEnvironment.MapPath("~/Data/data.html")
這就是你如何從根目錄'參考'這些文件... –
@Nate你是什麼意思,〜自動擴展? – aknuds1
[HttpContext.Current.Server.MapPath](http://msdn.microsoft.com/zh-cn/library/system.web.httpserverutility.mappath.aspx)? – nemesv