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来获得。
- /// RequestHelper 的摘 要说明。
- /// 请求类
- /// </summary>
- public class RequestHelper
- {
- public RequestHelper()
- {
- //
- // TODO: 在此处添加构造函数逻辑
- //
- }
- /**//// <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;
- }
- /**//// <summary>
- /// 判断是否来自搜索引擎链接
- /// </summary>
- /// <returns>是否来自搜索引擎链 接</returns>
- public static bool IsSearchEnginesGet()
- {
- string[] SearchEngine = {"google", "yahoo", "msn", "baidu", "sogou", "sohu", "sina", "163", "lycos", "tom"};
- string tmpReferrer = HttpContext.Current.Request.UrlReferrer.ToString().ToLower();
- for (int i = 0; i < SearchEngine.Length; i++)
- {
- if (tmpReferrer.IndexOf(SearchEngine[i]) >= 0)
- {
- return true;
- }
- }
- return false;
- }
- /**//// <summary>
- /// 获得当前完整Url地址
- /// </summary>
- /// <returns>当前完整Url地 址</returns>
- public static string GetUrl()
- {
- return HttpContext.Current.Request.Url.ToString();
- }
- /**//// <summary>
- /// 获得指定Url参数的值
- /// </summary>
- /// <param name="strName"& gt;Url参数</param>
- /// <returns>Url参数的值</returns>
- public static string GetQueryString(string strName)
- {
- if (HttpContext.Current.Request.QueryString[strName] == null)
- {
- return "";
- }
- return HttpContext.Current.Request.QueryString[strName];
- }
- /**//// <summary>
- /// 获得当前页面的名称
- /// </summary>
- /// <returns>当前页面的名称< /returns>
- public static string GetPageName()
- {
- string [] urlArr = HttpContext.Current.Request.Url.AbsolutePath.Split('/');
- return urlArr[urlArr.Length - 1].ToLower();
- }
- /**//// <summary>
- /// 返回表单或Url参数的总个数
- /// </summary>
- /// <returns></returns>
- public static int GetParamCount()
- {
- return HttpContext.Current.Request.Form.Count + HttpContext.Current.Request.QueryString.Count;
- }