在WCF中調用Server.MapPath 獲取服務發布目錄路徑


在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服務中使用)

程序員的基礎教程:菜鳥程序員


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM