HttpContext 主要作用是要獲得你客戶端向服務端請求提交的相關信息
HttpContext 類:封裝有關個別 HTTP 請求的所有 HTTP 特定的信息.也有人叫上下文信息.
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提供內容.
實際用處:
在業務層需要取得當前頁面層的Session,Request,Response,Server時可以通過 Http.Current來獲得。
/// <summary>
/// 判斷當前頁面是否接收到了Post請求
/// </summary>
/// <returns>是否接收到了Post請 求</returns>
public static bool IsPost()
{
return HttpContext.Current.Request.HttpMethod.Equals("POST");
}
/// <summary>
/// 判斷當前頁面是否接收到了Get請求
/// </summary>
/// <returns>是否接收到了Get請 求</returns>
public static bool IsGet()
{
return HttpContext.Current.Request.HttpMethod.Equals("GET");
}
/// <summary>
/// 返回指定的服務器變量信息
/// </summary>
/// <param name="strName"& gt;服務器變量名</param>
/// <returns>服務器變量信息</returns>
public static string GetServerString(string strName)
{
if (HttpContext.Current.Request.ServerVariables[strName] == null)
{
return "";
}
return HttpContext.Current.Request.ServerVariables[strName].ToString();
}
/// <summary>
/// 返回上一個頁面的地址
/// </summary>
/// <returns>上一個頁面的地 址</returns>
public static string GetUrlReferrer()
{
string retVal = null;
try
{
retVal = HttpContext.Current.Request.UrlReferrer.ToString();
}
catch { }
if (retVal == null)
return "";
return retVal;
}
/// <summary>
/// 得到當前完整主機頭
/// </summary>
/// <returns></returns>
public static string GetCurrentFullHost()
{
HttpRequest request = System.Web.HttpContext.Current.Request;
if (!request.Url.IsDefaultPort)
{
return string.Format("{0}:{1}", request.Url.Host, request.Url.Port.ToString());
}
return request.Url.Host;
}
/// <summary>
/// 得到主機頭
/// </summary>
/// <returns></returns>
public static string GetHost()
{
return HttpContext.Current.Request.Url.Host;
}
/// <summary>
/// 獲取當前請求的原始 URL(URL 中域信息之 后的部分,包括查詢字符串(如果存在))
/// </summary>
/// <returns>原 始 URL</returns>
public static string GetRawUrl()
{
return HttpContext.Current.Request.RawUrl;
}
/// <summary>
/// 判斷當前訪問是否來自瀏覽器軟件
/// </summary>
/// <returns>當前訪問是否來自瀏覽器 軟件</returns>
public static bool IsBrowserGet()
{
string[] BrowserName = { "ie", "opera", "netscape", "mozilla" };
string curBrowser = HttpContext.Current.Request.Browser.Type.ToLower();
for (int i = 0; i < BrowserName.Length; i++)
{
if (curBrowser.IndexOf(BrowserName[i]) >= 0)
{
return true;
}
}
return false;
}