簡介:
1.Server.MapPath 所獲得的路徑都是服務(wù)器上的物理路徑,也就是常說的絕對路徑。
2.全名: System.Web.HttpContext.Current.Server.MapPath
注意點(diǎn):
1、Server.MapPath("/") :獲得應(yīng)用程序根目錄所在的位置,如 C:\Inetpub\wwwroot\。
2、Server.MapPath("./") : 獲得所在頁面的當(dāng)前目錄,等價(jià)于 Server.MapPath("")。
3、Server.MapPath("../") : 獲得所在頁面的上級目錄。
4、 Server.MapPath("~/") : 獲得當(dāng)前應(yīng)用級程序的目錄,如果是根目錄,就是根目錄,如果是虛擬目錄,就是虛擬目錄所在的位置,如C:\Inetpub\wwwroot\Example\。
問題
如果你從Page類(創(chuàng)建.aspx的Page頁時(shí)代碼文件.aspx.cs)繼承的類中執(zhí)行這條語句,才可以簡單地使用 DataBase = Server.MapPath("data.mdb"); 否 則寫全命名空間:System.Web.HttpContext.Current.Server.MapPath();
注意:如果是在一個(gè)類庫下 的一個(gè)類中、要先添加引入(在bin目錄右鍵,添加引用)using System.Web;因?yàn)樾陆ㄒ粋€(gè)類庫時(shí)默認(rèn)是不引入using (通過Server.MapPath()可以獲取文件的絕對路徑。)
如果你從Page類繼承[ji cheng]的類中執(zhí)行[zhi hang]這條語句[yu ju],才可以簡單地使用
DataBase = Server.MapPath("data.mdb");
否則寫全命名空間[kong jian][ming ming kong jian]:System.Web.HttpContext.Current.Server.MapPath();
注意:如果是在一個(gè)類庫[lei ku]下的一個(gè)類中、要先添加引入using System.Web;因?yàn)樾陆ㄒ粋€(gè)類庫[lei ku]時(shí)默認(rèn)[mo ren]是不引入using System.Web的!
主要總結(jié)Server.MapPath 這個(gè)方法的使用以及使用的場景,不是什么時(shí)候都適合使用;
1、實(shí)現(xiàn)功能:
Server.MapPath能夠獲取指定URL相對服務(wù)器的物理路徑,在IIS服務(wù)端,能夠根據(jù)文件名來獲取該文件的物理路徑;
2、存在命令空間:
System.Web.HttpContext.Current.Server.MapPath 以及System.web.MVC.Control.Server.Mapth;
3、使用情況:
既然是System.Web.HttpContent 也及時(shí)表明該方法只能放在Http.web中使用,非該環(huán)境系統(tǒng)會扔出一個(gè)錯誤;非web環(huán)境是什么意思那,舉個(gè)例子,我們使用線程來處理某個(gè)業(yè)務(wù)邏輯的時(shí)候,這個(gè)時(shí)候你使用該方法,那必然報(bào)錯,以為你已經(jīng)脫離了web環(huán)境。所以視情況而定;獲取虛擬目錄的物理地址,該方法很有效果;
隨便補(bǔ)充一句,多線程編程的時(shí)候,一定要分清楚那些事線程能夠獲取的資源,那些事依賴其他環(huán)境獲取的變量,比如IIS中多線程獲取緩存數(shù)據(jù),離開了HttpWeb這環(huán)境來獲取IIS的緩存,必然是失敗的,所以要分清楚多線程編程時(shí)候,使用的資源對象。線程安全對象集合:ConcurrentQueue、ConcurrentBag等
4、需要注意事項(xiàng):
system.Web.HttpContext.Current.Server.MapPath("myPic") 也就是獲取當(dāng)前平級目錄地址;
system.Web.HttpContext.Current.Server.MapPath("../myPic") 也就是獲取當(dāng)前上級目錄地址;
使用的時(shí)候需要慎重;
5、同類使用注意:
HttpContext.Current.Cache.Add(CacheKey, DataDirectory, null, DateTime.MaxValue, TimeSpan.FromMinutes(15), CacheItemPriority.NotRemovable, new CacheItemRemovedCallback(CacheItemRemovedCallback));public static void CacheItemRemovedCallback(string key, object value, CacheItemRemovedReason reason) { /****S測試壓力代碼 數(shù)據(jù)請求*****/ Dictionary<string, int> DataDic = (Dictionary<string, int>)value; string ResultText = ""; foreach (var currkey in DataDic) { ResultText += currkey.Key + "=" + currkey.Value+"$"; } LogFun.Instance().WriteLog(key, ResultText.Trim('$'),false); /****E測試壓力代碼 數(shù)據(jù)請求*****/ }
如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答!! 點(diǎn)擊進(jìn)入論壇