HttpContext類

這是MSDN對HttpContext的說明:    
    HttpContext 類:封裝有關個別 HTTP 請求的所有 HTTP 特定的信息。 (網上說是上下文信息,啥又叫上下文呢?個人感覺說的不清不楚) 
    這是MSDN對它的備註:
        爲繼承 IHttpModule  IHttpHandler 接口的類提供了對當前 HTTP 請求的HttpContext 對象的引用。該對象提供對請求的內部 RequestResponse  Server 屬性的訪問。
    大家可以點擊這個鏈接查看MSDN HttpContext 類.包括說明和如何使用.

於是,上網狂搜(有網絡就是好啊.)
    這是我補充的HttpContext 類:
    1.生存週期:從客戶端用戶點擊併產生了一個向服務器發送請求開始---服務器處理完請求並生成返回到客戶端爲止.
       注:針對每個不同用戶的請求,服務器都會創建一個新的HttpContext實例直到請求結束,服務器銷燬這個實例.
    2.爲什麼會有HttpContext類呢:在ASP年代,大家都是通過在.asp頁面的代碼中使用Request,Respose,Server等等這些Http特定信息的.但在ASP.NET時代,這中方式已經無法滿足應用,(比如我們要在IHttpModule中處理Request時,我們使用什麼方法來獲取呢?於是就產生了HttpContext類,它對Request,Respose,Server等等都進行了封裝,並保證在整個請求週期內都可以隨時隨地的調用.)
    3.特殊性:當然HttpContext不僅僅只有這點功能.ASP.NET中它還提供了很多特殊的功能.例如Cache.還有HttpContext.Item,通過它你可以在HttpContext的生存週期內提前存儲一些臨時的數據,方便隨時使用.具體的大家還是參考上面的MSDN提供內容.

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

對於WebForm1:

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. ");

   Context.Items["WebForm1List"] = list;

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

對於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來做。

2、截獲Http請求並作特殊處理
主要是用在Application_BeginRequest方法裏。Application_BeginRequest方法在global.asax.cs裏定義。你可以在Http請求剛剛開始的時候,截獲他,做一些特殊的處理。這裏你不能用Session來做,因爲此時Session對象還沒有被建立。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章