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提供內容.
html

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

對於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;post

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

對於WebForm2:orm

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

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

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

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

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

 

出處:http://www.cnblogs.com/ajunForNet/archive/2013/01/22/2872214.html

相關文章
相關標籤/搜索