Server.MapPath查詢路徑那幾件事


主要總結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測試壓力代碼 數據請求*****/
        }

 


免責聲明!

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



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