主要總結Server.MapPath 這個方法的使用以及使用的場景,不是什么時候都適合使用;
1、實現功能:
Server.MapPath能夠獲取指定URL相對服務器的物理路徑,在IIS服務端,能夠根據文件名來獲取該文件的物理路徑;
2、存在命令空間:
System.Web.HttpContext.Current.Server.MapPath 以及System.web.MVC.Control.Server.Mapth;
3、使用情況:
既然是System.Web.HttpContent 也及時表明該方法只能放在Http.web中使用,非該環境系統會扔出一個錯誤;非web環境是什么意思那,舉個例子,我們使用線程來處理某個業務邏輯的時候,這個時候你使用該方法,那必然報錯,以為你已經脫離了web環境。所以視情況而定;獲取虛擬目錄的物理地址,該方法很有效果;
隨便補充一句,多線程編程的時候,一定要分清楚那些事線程能夠獲取的資源,那些事依賴其他環境獲取的變量,比如IIS中多線程獲取緩存數據,離開了HttpWeb這環境來獲取IIS的緩存,必然是失敗的,所以要分清楚多線程編程時候,使用的資源對象。線程安全對象集合:ConcurrentQueue、ConcurrentBag等
4、需要注意事項:
system.Web.HttpContext.Current.Server.MapPath("myPic") 也就是獲取當前平級目錄地址;
system.Web.HttpContext.Current.Server.MapPath("../myPic") 也就是獲取當前上級目錄地址;
使用的時候需要慎重;
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測試壓力代碼 數據請求*****/ 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測試壓力代碼 數據請求*****/ }