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来获得。

  1. /// RequestHelper 的摘 要说明。  
  2. /// 请求类  
  3. /// </summary>  
  4. public class RequestHelper  
  5. {  
  6.     public RequestHelper()  
  7.     {  
  8.         //  
  9.         // TODO: 在此处添加构造函数逻辑  
  10.         //  
  11.     }  
  12.   
  13.     /**//// <summary>  
  14.     /// 判断当前页面是否接收到了Post请求  
  15.     /// </summary>  
  16.     /// <returns>是否接收到了Post请 求</returns>  
  17.     public static bool IsPost()  
  18.     {  
  19.         return HttpContext.Current.Request.HttpMethod.Equals("POST");  
  20.     }  
  21.     /**//// <summary>  
  22.     /// 判断当前页面是否接收到了Get请求  
  23.     /// </summary>  
  24.     /// <returns>是否接收到了Get请 求</returns>  
  25.     public static bool IsGet()  
  26.     {  
  27.         return HttpContext.Current.Request.HttpMethod.Equals("GET");  
  28.     }  
  29.   
  30.     /**//// <summary>  
  31.     /// 返回指定的服务器变量信息  
  32.     /// </summary>  
  33.     /// <param name="strName"& gt;服务器变量名</param>  
  34.     /// <returns>服务器变量信息</returns>  
  35.     public static string GetServerString(string strName)  
  36.     {  
  37.         //  
  38.         if (HttpContext.Current.Request.ServerVariables[strName] == null)  
  39.         {  
  40.             return "";  
  41.         }  
  42.         return HttpContext.Current.Request.ServerVariables[strName].ToString();  
  43.     }  
  44.   
  45.     /**//// <summary>  
  46.     /// 返回上一个页面的地址  
  47.     /// </summary>  
  48.     /// <returns>上一个页面的地 址</returns>  
  49.     public static string GetUrlReferrer()  
  50.     {  
  51.         string retVal = null;  
  52.   
  53.         try  
  54.         {  
  55.             retVal = HttpContext.Current.Request.UrlReferrer.ToString();  
  56.         }  
  57.         catch{}  
  58.           
  59.         if (retVal == null)  
  60.             return "";  
  61.   
  62.         return retVal;  
  63.   
  64.     }  
  65.       
  66.     /**//// <summary>  
  67.     /// 得到当前完整主机头  
  68.     /// </summary>  
  69.     /// <returns></returns>  
  70.     public static string GetCurrentFullHost()  
  71.     {  
  72.         HttpRequest request = System.Web.HttpContext.Current.Request;  
  73.         if (!request.Url.IsDefaultPort)  
  74.         {  
  75.             return string.Format("{0}:{1}", request.Url.Host, request.Url.Port.ToString());  
  76.         }  
  77.         return request.Url.Host;  
  78.     }  
  79.   
  80.     /**//// <summary>  
  81.     /// 得到主机头  
  82.     /// </summary>  
  83.     /// <returns></returns>  
  84.     public static string GetHost()  
  85.     {  
  86.         return HttpContext.Current.Request.Url.Host;  
  87.     }  
  88.   
  89.   
  90.     /**//// <summary>  
  91.     /// 获取当前请求的原始 URL(URL 中域信息之 后的部分,包括查询字符串(如果存在))  
  92.     /// </summary>  
  93.     /// <returns>原 始 URL</returns>  
  94.     public static string GetRawUrl()  
  95.     {  
  96.         return HttpContext.Current.Request.RawUrl;  
  97.     }  
  98.   
  99.     /**//// <summary>  
  100.     /// 判断当前访问是否来自浏览器软件  
  101.     /// </summary>  
  102.     /// <returns>当前访问是否来自浏览器 软件</returns>  
  103.     public static bool IsBrowserGet()  
  104.     {  
  105.         string[] BrowserName = {"ie""opera""netscape""mozilla"};  
  106.         string curBrowser = HttpContext.Current.Request.Browser.Type.ToLower();  
  107.         for (int i = 0; i < BrowserName.Length; i++)  
  108.         {  
  109.             if (curBrowser.IndexOf(BrowserName[i]) >= 0)  
  110.             {  
  111.                 return true;  
  112.             }  
  113.         }  
  114.         return false;  
  115.     }  
  116.   
  117.     /**//// <summary>  
  118.     /// 判断是否来自搜索引擎链接  
  119.     /// </summary>  
  120.     /// <returns>是否来自搜索引擎链 接</returns>  
  121.     public static bool IsSearchEnginesGet()  
  122.     {  
  123.         string[] SearchEngine = {"google""yahoo""msn""baidu""sogou""sohu""sina""163""lycos""tom"};  
  124.         string tmpReferrer = HttpContext.Current.Request.UrlReferrer.ToString().ToLower();  
  125.         for (int i = 0; i < SearchEngine.Length; i++)  
  126.         {  
  127.             if (tmpReferrer.IndexOf(SearchEngine[i]) >= 0)  
  128.             {  
  129.                 return true;  
  130.             }  
  131.         }  
  132.         return false;  
  133.     }  
  134.   
  135.     /**//// <summary>  
  136.     /// 获得当前完整Url地址  
  137.     /// </summary>  
  138.     /// <returns>当前完整Url地 址</returns>  
  139.     public static string GetUrl()  
  140.     {  
  141.         return HttpContext.Current.Request.Url.ToString();  
  142.     }  
  143.       
  144.   
  145.     /**//// <summary>  
  146.     /// 获得指定Url参数的值  
  147.     /// </summary>  
  148.     /// <param name="strName"& gt;Url参数</param>  
  149.     /// <returns>Url参数的值</returns>  
  150.     public static string GetQueryString(string strName)  
  151.     {  
  152.         if (HttpContext.Current.Request.QueryString[strName] == null)  
  153.         {  
  154.             return "";  
  155.         }  
  156.         return HttpContext.Current.Request.QueryString[strName];  
  157.     }  
  158.   
  159.     /**//// <summary>  
  160.     /// 获得当前页面的名称  
  161.     /// </summary>  
  162.     /// <returns>当前页面的名称< /returns>  
  163.     public static string GetPageName()  
  164.     {  
  165.         string [] urlArr = HttpContext.Current.Request.Url.AbsolutePath.Split('/');  
  166.         return urlArr[urlArr.Length - 1].ToLower();  
  167.     }  
  168.   
  169.     /**//// <summary>  
  170.     /// 返回表单或Url参数的总个数  
  171.     /// </summary>  
  172.     /// <returns></returns>  
  173.     public static int GetParamCount()  
  174.     {  
  175.         return HttpContext.Current.Request.Form.Count + HttpContext.Current.Request.QueryString.Count;  
  176.     }  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值