這是MSDN對HttpContext的說明:
HttpContext 類:封裝有關個別 HTTP 請求的所有 HTTP 特定的信息。 (網上說是上下文信息,啥又叫上下文呢?個人感覺說的不清不楚)
這是MSDN對它的備註:
爲繼承 IHttpModule 和 IHttpHandler 接口的類提供了對當前
HTTP 請求的HttpContext 對象的引用。該對象提供對請求的內部 Request、Response 和 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 事件