HttpContext & HttpRuntime

問題引出html

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模式 參見:http://www.javashuo.com/article/p-yqdcuibx-em.htmlspa

HttpContext

限制:同一Http請求線程

Server.Transfer .VS. Response.Redirecthtm

Server.Transfer 請求跳轉頁面,歸屬同一個http請求,URL無變化,全部操做均在服務器完成;Response.Redirect 則是從新發起新的頁面請求,須要瀏覽器和服務器交互。對象

具體參見:HttpContext 初識

HttpContext.Current 由其維護

System.Runtime.Remoting.Messaging.CallContext.HostContext as HttpContext

其中,CallContext.HostContext 表示:獲取或設置與當前線程相關聯的主機上下文 。

APM模式下的異步完成回調,訪問HttpContext.Current方法:推薦第2種方法

  • 在類型中添加一個字段來保存HttpContext的引用(異步開始前)
  • 將HttpContext賦值給BeginXXX方法的最後一個參數(object state)

HttpRuntime

使用時建議自行封裝,可參見:ASP.Net HttpRuntime.Cache 使用總結

獲取或設置與當前線程相關聯的主機上下文

相關文章
相關標籤/搜索