HttpContext HttpRuntime
問題引出
HttpContext.Current.Cache .VS. HttpRuntime.Cache
- HttpRuntime.Cache:獲取當前應用程序的Cache
- HttpContext.Current.Cache:為當前HTTP請求獲取Cache對象,跨線程可用,在APM模式或創建了子線程的場景中不能用
HttpContext.Current.Cache 調用 HttpRuntime.Cache實現,兩者指向同一 Cache對象:
- HttpRuntime.Cache相當于是緩存具體實現類,非Web應用下也可以使用
- HttpContext.Current.Cache是對緩存類的封裝,局限HttpContext只能用于Web應用
在某些情況下,HttpContext還沒被創建出來為null,就只能用 HttpRuntime.Cache。
- 定時器的回調。
- Cache的移除通知。
- APM模式下異步完成回調。
- 主動創建線程或者將任務交給線程池來執行
建議使用 HttpRuntime.Cache,既能減少出錯,也減少一次函數調用。
eg:在獲取程序\站點的根目錄時盡量使用 System.Web.HttpRuntime.AppDomainAppPath。
其中,關于 APM模式 參見:https://www.cnblogs.com/mcgrady/p/5660314.html
HttpContext
限制:同一Http請求
Server.Transfer .VS. Response.Redirect
Server.Transfer 請求跳轉頁面,歸屬同一個http請求,URL無變化,所有操作均在服務器完成;Response.Redirect 則是重新發起新的頁面請求,需要瀏覽器和服務器交互。
具體參見:HttpContext 初識;
HttpContext.Current 由其維護
System.Runtime.Remoting.Messaging.CallContext.HostContext as HttpContext其中,CallContext.HostContext 表示:獲取或設置與當前線程相關聯的主機上下文 。
- HttpContext.Current? 并非無處不在
- 我所知道的HttpContext.Current:推薦
APM模式下的異步完成回調,訪問HttpContext.Current方法:推薦第2種方法
- 在類型中添加一個字段來保存HttpContext的引用(異步開始前)
- 將HttpContext賦值給BeginXXX方法的最后一個參數(object state)
HttpRuntime
使用時建議自行封裝,可參見:ASP.Net HttpRuntime.Cache 使用總結;
獲取或設置與當前線程相關聯的主機上下文
轉載于:https://www.cnblogs.com/wjcx-sqh/p/11093956.html
總結
以上是生活随笔為你收集整理的HttpContext HttpRuntime的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【资讯】全球瞩目!无人驾驶真的来了!
- 下一篇: java删除xml文件中尖括号之外的内容