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;

}

c#中 HttpContext作用(一)【转】的更多相关文章

  1. js中!!的作用

    js中!!的作用是: !!一般用来将后面的表达式转换为布尔型的数据(boolean) ===表示类型什么的全部相等(自己写一个if测试一下就好了)!==表示要全部不想等包括类型(一样写一个if)||或 ...

  2. emms指令在MMX指令中的作用

    emms指令在MMX指令中的作用 转自:http://blog.csdn.net/psusong/archive/2009/01/08/3737047.aspx MMX和SSE都是INTEL开发的基于 ...

  3. 什么是Zookeeper,Zookeeper的作用是什么,在Hadoop及hbase中具体作用是什么

    什么是Zookeeper,Zookeeper的作用是什么,它与NameNode及HMaster如何协作?在没有接触Zookeeper的同学,或许会有这些疑问.这里给大家总结一下. 一.什么是Zooke ...

  4. SET STATISTICS IO和SET STATISTICS TIME 在SQL Server查询性能优化中的作用

    近段时间以来,一直在探究SQL Server查询性能的问题,当然也漫无目的的查找了很多资料,也从网上的大神们的文章中学到了很多,在这里,向各位大神致敬.正是受大神们无私奉献精神的影响,所以小弟也作为回 ...

  5. WCF技术剖析之十五:数据契约代理(DataContractSurrogate)在序列化中的作用

    原文:WCF技术剖析之十五:数据契约代理(DataContractSurrogate)在序列化中的作用 [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道<天天山海经> ...

  6. mysql进阶(十一)外键在数据库中的作用

    MySQL外键在数据库中的作用 MySQL外键的目的是控制存储在外键表中的数据,使两张表形成关联,是MySQL数据库中非常重要的组成部分,值得我们去深入了解.那么,MySQL外键究竟起到哪些作用呢?下 ...

  7. Hibernate中cascade作用

    Hibernate中cascade作用 只有“关系标记”才有cascade属性: 一个操作因级联cascade可能触发多个关联操作.前一个操作叫“主控操作”,后一个操作叫“关联操作”. cascade ...

  8. SLAM+语音机器人DIY系列:(二)ROS入门——8.理解roslaunch在大型项目中的作用

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  9. c/c++ 类成员变量,成员函数的存储方式,以及this指针在c++中的作用

    c/c++ 类成员变量,成员函数的存储方式,以及this指针在c++中的作用 c++不会像上图那样为每一个对象的成员变量和成员函数开辟内存空间, 而是像下图那样,只为每一个对象的成员变量开辟空间.成员 ...

随机推荐

  1. 【转】Android LCD(三):Samsung LCD接口篇

    关键词:android LCD控制器 Framebuffer PWM  平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台:samsung exynos ...

  2. js跳转页面代码用法

    一:window.location.href='https://www.baidu.com';  需要加上http或者https,否则会查找项目内htm打开. 二:window.history.bac ...

  3. Spring整合Quartz

    目录[-] 一.Spring创建JobDetail的两种方式 二.整合方式一示例步骤 1.将spring核心jar包.quartz.jar和Spring-context-support.jar导入类路 ...

  4. 技术之美[程序人生]我在IBM实习的日子

    写这篇文章的时候,我已经在IBM正式工作了,看看上一篇博文的发布日期,才发现,我已经将近三个月没有更新博客了,多么惊人!为什么这么久?期间发生了很多事情.最重要的一件就是我大学毕业了!毕业的那么平淡, ...

  5. LR实战之Discuz开源论坛——登录脚本检查点

    在开发Discuz登录脚本时,遇到的一个问题是怎么去验证虚拟用户真正的登录成功,当然,熟悉LoadRunner工具的人就会知道,在脚本中使用检查点,对,没错! 我们知道,LR检查点功能有两种:文本检查 ...

  6. NTP-ntpdate:no server suitable for synchronization found

    NTP-ntpdate 问题处理 解决ntp的错误 no server suitable for synchronization found 当用ntpdate -d 来查询时会发现导致 no ser ...

  7. android——字体颜色跟随状态改变

    TextView的字体颜色也可以和ImageView的background一样,跟随状态发生改变.只需要自定义一下字体颜色.在color文件夹下面,新建一个颜色文件的xml. OK ,这就完成 了. ...

  8. DWZ在APS.NET WebForm中的使用(二)

    任何框架由于个人理解不到位或者框架自身的局限性,在项目实施中,大家或多或少都会遇到一些问题,下面我就讲述下我在使用DWZ开发过程中的几个问题.如有一点能帮助到你,这篇文章也算有存在的意义了. 1.树菜 ...

  9. Android studio教程:[2]项目整体布局

    上篇介绍了如何创建项目,这一次将介绍创建完的项目如何呈现在开发者的眼前,介绍android studio开发环境的整体布局,让大家知道各个模块的位置和功能. 工具/原料 Android studio ...

  10. mysql 取得行号后再排序

    一.理论准备 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. TreeMap:基于红黑树(Red-Black tre ...