要在Web環境將虛擬路徑(~/XXX/)轉換成實體磁碟Path, 一般都會使用下列4種函式作轉換:
- Page.MapPath()
- Server.MapPath()
- Request.MapPath()
- HttpContext.Current.Server.MapPath()
當把處理函式整理成Model類別時,為了減少傳入Page類別,就會使用第4種方式。然而若呼叫者(Caller)不是由Web頁面觸發的話,就會引起HttpContext.Current類別Null Reference錯誤。
因此在.NET 4.5以後版本,建議使用:
string phyPath = System.Web.Hosting.HostingEnvironment.MapPath(virPath);
這個方式即使在Global.asax中使用,也能正確解析虛擬相對路徑,是包裝Model Class中取得實體路徑較為建議的方式。
No comments:
Post a Comment