在WCF中想使用Server.Map獲取當前服務發布目錄的絕對路徑。可是在調試時卻發現:
“System.Web.HttpContext.Current.Server.MapPath("..." + filename);”
“當沒有開啟ASP.NET相容模式時(aspNetCompatibilityEnabled="true"),WCF不支持HttpContext, HttpApplication,大部分文章都建議修改<serviceHostingEnvironment aspNetCompatibilityEnabled="true">使WCF可使用ASP.NET傳統做法。”
最后有兩種解決方法:
string t1 = System.Web.HttpContext.Current.Server.MapPath("~");//以上寫法在WCF未開aspNetCompatibilityEnabled時, //會因HttpContext.Current == null發生錯誤
string t2 = System.Web.Hosting.HostingEnvironment.MapPath("~");
//以上寫法在WCF中使用沒有問題
1. Application.StartupPath——獲取啟動了應用程序的可執行文件的路徑,不包括可執行文件的名稱。
2. Environment.CurrentDirectory——獲取和設置當前目錄(即該進程從中啟動的目錄)的完全限定路徑,只是“當前”目錄,不一定是exe文件所在的目錄。在用FileOpenDialog選擇一個文件以后這個目錄就跟着發生改變了。
3. Application.ExecutablePath——獲取啟動了應用程序的可執行文件的路徑,包括可執行文件的名稱。
4。System.AppDomain.CurrentDomain.BaseDirectory——獲取基目錄,它由程序集沖突解決程序用來探測程序集。(windows服務中使用)
程序員的基礎教程:菜鳥程序員