zoukankan      html  css  js  c++  java
  • 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;

    }

     

  • 相关阅读:
    bzoj 1367
    codeforces 757F
    bzoj 3600
    比赛环境设置
    线段树合并
    BZOJ2105: 增强型LCP
    BZOJ3156: 防御准备
    BZOJ3252: 攻略
    BZOJ2464: 中山市选[2009]小明的游戏
    Beta Round #9 (酱油杯noi考后欢乐赛)乌鸦喝水
  • 原文地址:https://www.cnblogs.com/zhouyunbaosujina/p/3164956.html
Copyright © 2011-2022 走看看