c#中 HttpContext作用(一)【轉】


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;

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM