HttpContext 类 作用

来源:互联网 发布:五笔打字员软件下载 编辑:程序博客网 时间:2024/05/09 03:34
一直用着HttpContext 类,但对它一直没有详细的了解,今天心情不错正好研究下,MSDN的解释是封装有关个别 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提供内容.

实际作用:

    /// 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">服务器变量名</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">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;        }        /**//// <summary>        /// 获得指定表单参数的值        /// </summary>        /// <param name="strName">表单参数</param>        /// <returns>表单参数的值</returns>        public static string GetFormString(string strName)        {            if (HttpContext.Current.Request.Form[strName] == null)            {                return "";            }            return HttpContext.Current.Request.Form[strName];        }        /**//// <summary>        /// 获得Url或表单参数的值, 先判断Url参数是否为空字符串, 如为True则返回表单参数的值        /// </summary>        /// <param name="strName">参数</param>        /// <returns>Url或表单参数的值</returns>        public static string GetString(string strName)        {            if ("".Equals(GetQueryString(strName)))            {                return GetFormString(strName);            }            else            {                return GetQueryString(strName);            }        }        /**//// <summary>        /// 获得指定Url参数的int类型值        /// </summary>        /// <param name="strName">Url参数</param>        /// <param name="defValue">缺省值</param>        /// <returns>Url参数的int类型值</returns>        public static int GetQueryInt(string strName, int defValue)        {            return Utils.StrToInt(HttpContext.Current.Request.QueryString[strName], defValue);        }        /**//// <summary>        /// 获得指定表单参数的int类型值        /// </summary>        /// <param name="strName">表单参数</param>        /// <param name="defValue">缺省值</param>        /// <returns>表单参数的int类型值</returns>        public static int GetFormInt(string strName, int defValue)        {            return Utils.StrToInt(HttpContext.Current.Request.Form[strName], defValue);        }        /**//// <summary>        /// 获得指定Url或表单参数的int类型值, 先判断Url参数是否为缺省值, 如为True则返回表单参数的值        /// </summary>        /// <param name="strName">Url或表单参数</param>        /// <param name="defValue">缺省值</param>        /// <returns>Url或表单参数的int类型值</returns>        public static int GetInt(string strName, int defValue)        {            if (GetQueryInt(strName, defValue) == defValue)            {                return GetFormInt(strName, defValue);            }            else            {                return GetQueryInt(strName, defValue);            }        }        /**//// <summary>        /// 获得指定Url参数的float类型值        /// </summary>        /// <param name="strName">Url参数</param>        /// <param name="defValue">缺省值</param>        /// <returns>Url参数的int类型值</returns>        public static float GetQueryFloat(string strName, float defValue)        {            return Utils.StrToFloat(HttpContext.Current.Request.QueryString[strName], defValue);        }        /**//// <summary>        /// 获得指定表单参数的float类型值        /// </summary>        /// <param name="strName">表单参数</param>        /// <param name="defValue">缺省值</param>        /// <returns>表单参数的float类型值</returns>        public static float GetFormFloat(string strName, float defValue)        {            return Utils.StrToFloat(HttpContext.Current.Request.Form[strName], defValue);        }                /**//// <summary>        /// 获得指定Url或表单参数的float类型值, 先判断Url参数是否为缺省值, 如为True则返回表单参数的值        /// </summary>        /// <param name="strName">Url或表单参数</param>        /// <param name="defValue">缺省值</param>        /// <returns>Url或表单参数的int类型值</returns>        public static float GetFloat(string strName, float defValue)        {            if (GetQueryFloat(strName, defValue) == defValue)            {                return GetFormFloat(strName, defValue);            }            else            {                return GetQueryFloat(strName, defValue);            }        }        /**//// <summary>        /// 获得当前页面客户端的IP        /// </summary>        /// <returns>当前页面客户端的IP</returns>        public static string GetIP()        {            string result = String.Empty;            result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];            if (null == result || result == String.Empty)            {                result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];            }            if (null == result || result == String.Empty)            {                result = HttpContext.Current.Request.UserHostAddress;            }            if (null == result || result == String.Empty)            {                return "0.0.0.0";            }            return result;        }        /**//// <summary>        /// 保存用户上传的文件        /// </summary>        /// <param name="path">保存路径</param>        public static void SaveRequestFile(string path)        {            if (HttpContext.Current.Request.Files.Count > 0)            {                HttpContext.Current.Request.Files[0].SaveAs(path);            }        }            }


 

 

原创粉丝点击