HttpContext詳解

HttpContext 類:封裝有關個別 HTTP 請求的全部 HTTP 特定的信息。服務器

 在處理請求執行鏈的各個階段中,會有一個對象在各個對象之間進行傳遞,也即會保存 請求的上下文信息,這個對象就是HttpContext對象。HttpContext封裝了ASP.NET要處理的單次請求的全部信息。在請求處理機制建 立時,HttpContext類有HttpRuntime對象實例化,接着該對象會經歷請求生存期的各個階段spa


HttpContext的介紹:保持單個用戶、單個請求的數據,而且數據只在該請求期間保持。被提供用於保持須要在不一樣的HttpModules和HttpHandlers之間傳遞的值。它也能夠用於保持某個完整請求的相應信息。
orm

Current 屬性是個十分有用的靜態成員,返回當前請求的HttpContex對象。Items是一個哈希表,在處理請求所涉及的模塊和處理程序間共享數據。每一個自定 義模塊或處理程序可以將自身信息添加到請求的HttpContext對象中,在Items中存儲的信息最終被頁面使用,但這些信息只能在請求的執行期間訪 問
對象


用法
一、在兩個表單之間傳遞數據
看下面的代碼:
事件

對於WebForm1:string

private void Page_Load(object sender, System.EventArgs e)
{
   ArrayList list = new ArrayList(4);
   list.Add("This list ");
   list.Add("is for ");
   list.Add("WebForm2 ");
   list.Add("to see. ");
it

   Context.Items["WebForm1List"] = list;io

   Server.Transfer("WebForm2.aspx");
}
form

//特別說明ServerTransfer是在服務器直接操做的的和調用的地方屬於同一次http請求,此處若是使用Response.Redirect則再WebForm2中再次訪問Context.Items["WebForm1List"]時,Context.Items["WebForm1List"]null,由於Response.Redirect是從新發起了一次Http請求
表單

對於WebForm2:

private void Page_Load(object sender, System.EventArgs e)
{
   ArrayList list = Context.Items["WebForm1List"] as ArrayList;

   if(list != null)
   {
      foreach(string s in list)
      {
         Response.Write(s);
      }
   } 
}


在WebForm1的頁面加載過程當中,經過Server.Transfer方法,將WebForm1的狀態傳遞到了WebForm2,WebForm2能夠獲得它,並做一些相應的處理。用法1也能夠用Session來作。

二、截獲Http請求並做特殊處理
主要是用在Application_BeginRequest方法裏。Application_BeginRequest方法在 global.asax.cs裏定義。你能夠在Http請求剛剛開始的時候,截獲他,作一些特殊的處理。這裏你不能用Session來作,由於此時 Session對象尚未被創建。

利用Context.Item集合,你能夠在Http請求的整個生命期,經過HttpModules, HttpHandlers, Webforms, and Application 事件

相關文章
相關標籤/搜索