【.NET Cote】你真的了解HttpRuntime類嗎
文章目錄
- 【.NET Cote】你真的了解HttpRuntime類嗎
- 一、HttpRuntime概述
- 二、HttpRuntime是什么包
- 三、HttpRuntime屬性
- 四、HttpRuntime方法
- 五、HttpRuntime.Cache方法
- 六、HttpRuntime.Cache應用
一、HttpRuntime概述
C# HttpRuntime是一個ASP.NET應用程序的核心類之一,它提供了一些有用的方法和屬性,可以讓ASP.NET應用程序中處理HTTP請求和響應。常見的用法包括:
- 獲取當前請求的HttpContext對象
- 獲取應用程序的虛擬地址
- 獲取應用程序的物理路徑
- 獲取應用程序的配置信息
- 獲取應用程序的緩存
- 啟動應用程序的會話狀態
- 調用Web服務類
在使用HttpRuntime類之前,需要先確保在ASP.NET應用程序中已經引用了System.Web命名空間。
二、HttpRuntime是什么包
C# HttpRuntime是一個包含一組靜態方法和屬性的類,它提供了一個用于處理HTTP請求的運行時環境。它通常用于ASP.NET Web應用程序中,可以用來獲取當前應用程序的狀態,處理請求,管理會話等。
HttpRuntime對象用于處理HTTP請求ASP.NET管道模型的開頭。該方法ProcessRequest
驅動所有后續ASP.NET Web
處理。
三、HttpRuntime屬性
AppDomainAppId
:獲取httpRuntime所在的應用程序域的應用程序標識AppDomainAppPath
:獲取承載在當前應用程序域中的應用程序的應用程序目錄的物理驅動器路徑AppDomainAppVirtualPath
:獲取包含承載在當前應用程序域中的應用程序的目錄的虛擬路徑AppDomainId
:獲取HttpRuntime
實例所在應用程序域的域標識AspClientScriptPhysicalPath
:獲取 ASP.NET 客戶端腳本文件的文件夾路徑AspClientScriptVitualPath
:獲取 ASP.NET 客戶端腳本文件的虛擬路徑AspInstallDirectory
:獲取安裝 ASP.NET 可執行文件的目錄的物理路徑BinDirectory
:獲取當前應用程序的/bin目錄的物理路徑Cache
:獲取當前應用程序的Cache
ClrInstallDirectory
:獲取安裝公共語言運行時可執行文件的目錄的物理路徑CodegeDir
:獲取 ASP.NET 存儲當前應用程序的臨時文件(生成的源、編譯了的程序集等)的目錄的物理路徑IsOnUNCShare
:獲取一個值,該值指示應用程序是否映射到通用命名約定 (UNC) 共享MachineConfigurationDirectory
:獲取當前應用程序的 Machine.config 文件所在目錄的物理路徑UsingIntegratedPipeline
:獲取一個值,該值指示當前應用程序是否在 IIS 7.0 的集成管道模式下運行
四、HttpRuntime方法
Close()
:關閉HttpRuntime實例Equals(Object)
:確定指定對象是等于當前對象GetHashCode()
:作為默認哈希函數GetNamePermissionSet()
:返回與代碼組關聯的權限集MemberwiseClone()
:創建當前Object的淺表副本ProcessRequest(HttpWorkerRequest)
:驅動所有ASP.NET Web處理執行UnLoadAppDomain()
:終止當前應用程序。應用程序在下次接收到請求時重新啟動
五、HttpRuntime.Cache方法
HttpRuntime.Cache
相當于就是一個緩存具體實現類,這個類雖然被放在了。但是非Web應用也是可以拿來用的。
HttpContext.Cache
是對上述緩存類的封裝,由于封裝到了 HttpContext ,局限于只能在知道 HttpContext 下使用,即只能用于 Web 應用
Page.Cache或HttpContext.Cache。實際上都是HttpRuntime.Cache的快捷方式,Page.Cache訪問了HttpContext.Cache。
HttpRuntime.UnloadAppDomain()
靜態方法UnloadAppDomain()
可以讓我們用代碼重新啟動網站。通常用于用戶通過程序界面修改了一個比較重要的參數。這時需要重啟程序。
六、HttpRuntime.Cache應用
public class HttpRuntimeCache
{///<summary>///設置緩存時間,配置(從配置文件中讀取)///</summary>private const double Seconds = 30*24*60*60;///<summary>///緩存指定對象,設置緩存///</summary>public static bool Set(string key, object value){return Set(key, value, null, DateTime.Now.AddSeconds(Seconds),Cache.NoSlidingExpiration,CacheItemPriority.Default, null);}///<summary>///緩存指定對象,設置緩存///</summary>public static bool Set(string key,object value,string path){try{var cacheDependency = new CacheDependency(path);return Set(key, value, cacheDependency);}catch{return false;}}///<summary>///緩存指定對象,設置緩存///</summary>public static bool Set(string key,object value,CacheDependency cacheDependency){return Set(key,value,cacheDependency,Cache.NoAbsoluteExpiration,Cahe.NoSlidingExpiration,CacheItemPriority.Default,null);}///<summary>///緩存指定對象,設置緩存///</summary>public static bool Set(string key,object value,double seconds,bool isAbsulute){return Set(key,value,null,(isAbsulute ? DateTime.Now.AddSeconds(seconds) :Cache.NoAbsoluteExpiration), (isAbsulute ? Cache.NoSlidingExpiration : TimeSpan.FromSeconds(seconds)), CacheItemPriority.Default,null);}///<summary>///獲取緩存對象///<summary>public static object Get(string key){return GetPrivate(key);}///<summary>///判斷緩存中是否含有緩存該鍵///<summary>public static bool Exists(string key){return (GetPrivate(key) != null);}///<summary>///移除緩存對象///</summary>///<param name="key"></param>///<returns></returns>public static bool Remove(string key){if(string.IsNullOrEmpty(key)){return false;}HttpRuntime.Cache.Remove(key);return true;}///<summary>///移除所有緩存///</summary>///<returns></returns>public static bool RemoveAll(){IDictionaryEnumerator iDictionaryEnumerator = HttpRuntime.Cache.GetEnumerator();while (iDictionaryEnumerator.MoveNext()){HttpRuntime.Cache.Remove(Convert.ToString(iDictionaryEnumerator.Key));}return true;}///<summary>///設置緩存///</summary>public static bool Set(string key, object value, CacheDependency cacheDependency, DateTime dateTime,TimeSpan timeSpan, CacheItemPriority cacheItemPriority, CacheItemRemovedCallback cacheItemRemovedCallback){if (string.IsNullOrEmpty(key) || value == null){return false;}HttpRuntime.Cache.Insert(key, value, cacheDependency, dateTime, timeSpan, cacheItemPriority,cacheItemRemovedCallback);return true;}///<summary>///獲取緩存///</summary>private static object GetPrivate(string key){return string.IsNullOrEmpty(key) ? null : HttpRuntime.Cache.Get(key);}}