这是MSDN对HttpContext的说明:    
    HttpContext 类:封装有关个别 HTTP 请求的所有 HTTP 特定的信息。 (网上说是上下文信息,啥又叫上下文呢?个人感觉说的不清不楚) 
    这是MSDN对它的备注:
        为继承 IHttpModule 和 IHttpHandler 接口的类提供了对当前 HTTP 请求的HttpContext 对象的引用。该对象提供对请求的内部 RequestResponse 和 Server 属性的访问。
    大家可以点击这个链接查看MSDN HttpContext 类.包括说明和如何使用.

于是,上网狂搜(有网络就是好啊.)
    这是我补充的HttpContext 类:
    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提供内容.

用法
1、在两个表单之间传递数据
看下面的代码:

对于WebForm1:

private void Page_Load(object sender, System.EventArgs e)
{
   ArrayList list = new ArrayList(4);
   list.Add("This list ");
   list.Add("is for ");
   list.Add("WebForm2 ");
   list.Add("to see. ");

Context.Items["WebForm1List"] = list;

Server.Transfer("WebForm2.aspx");
}

对于WebForm2:

private void Page_Load(object sender, System.EventArgs e)
{
   ArrayList list = Context.Items["WebForm1List"] as ArrayList;

if(list != null)
   {
      foreach(string s in list)
      {
         Response.Write(s);
      }
   } 
}

在WebForm1的页面加载过程中,通过Server.Transfer方法,将WebForm1的状态传递到了WebForm2,WebForm2可以得到它,并作一些相应的处理。用法1也可以用Session来做。

2、截获Http请求并作特殊处理
主要是用在Application_BeginRequest方法里。Application_BeginRequest方法在global.asax.cs里定义。你可以在Http请求刚刚开始的时候,截获他,做一些特殊的处理。这里你不能用Session来做,因为此时Session对象还没有被建立。

利用Context.Item集合,你可以在Http请求的整个生命期,通过HttpModules, HttpHandlers, Webforms, and Application 事件

出处:http://www.cnblogs.com/ajunForNet/archive/2013/01/22/2872214.html

HttpContext是干什么的的更多相关文章

  1. nopCommerce架构分析系列(二)数据Cache

    原文(http://www.cnblogs.com/gusixing/archive/2012/04/12/2443799.html)非常感谢作者顾思行的分享! 序言 在很多访问量较大的系统中,尤其在 ...

  2. 异步 HttpContext.Current 为空null 另一种解决方法

    1.场景 在导入通讯录过程中,把导入的失败.成功的号码数进行统计,然后保存到session中,客户端通过轮询显示状态. 在实现过程中,使用的async调用方法,出现HttpContext.Curren ...

  3. 解决Asp.net Mvc中使用异步的时候HttpContext.Current为null的方法

    在项目中使用异步(async await)的时候发现一个现象,HttpContext.Current为null,导致一系列的问题. 上网查了一些资料后找到了一个对象: System.Threading ...

  4. HttpContext.Cache属性

    HttpContext基于HttpApplication的处理管道,由于HttpContext对象贯穿整个处理过程,所以,可以从HttpApplication处理管道的前端将状态数据传递到管道的后端, ...

  5. System.Web.HttpContext.Current.Session为NULL解决方法

    http://www.cnblogs.com/tianguook/archive/2010/09/27/1836988.html 自定义 HTTP 处理程序,从IHttpHandler继承,在写Sys ...

  6. Session 、Application 和 HttpContext 的使用区别

    在ASP.NET WEB页面开发中,经常会需要保存一些信息,以便在不同的页面或时间段都能够访问到.这其中便会用到Session和Application. Session .Application 和 ...

  7. Why is HttpContext.Current null after await?

    今天在对项目代码进行异步化改进的时候,遇到一个奇怪的问题(莫笑,以前没遇过),正如标题一样,HttpContext.Current 在 await 异步执行之后,就会变为 null. 演示代码: pu ...

  8. 在ASP.NET Core中怎么使用HttpContext.Current

    一.前言 我们都知道,ASP.NET Core作为最新的框架,在MVC5和ASP.NET WebForm的基础上做了大量的重构.如果我们想使用以前版本中的HttpContext.Current的话,目 ...

  9. HttpContext.Current.Session.SessionID相关问题及备忘

    今天Tony提到说我们系统中会利用如下代码来判断用户是否过期. if (string.IsNullOrEmpty(UserContext.ConnectionSessionId)) { LogUIFa ...

随机推荐

  1. python的常用的内置函数

    使用内置函数的好处:简单,快速. 1.zip():以多个序列为参数,返回元祖列表. 长度:在多个序列长度不一时,以最短的为准. 常见用途:构建多参数列表,构建字典. 2.map():在python2旧 ...

  2. css异步加载

    <link rel="preload" href="mystyles.css" as="style" onload="thi ...

  3. eclipse 中英文切换

    第一种方法: 在Eclipse安装目录下找到它的配置文件"eclipse.ini",用UE或者EditPlus等工具打开该配置文件,截图显示如下: 然后在最后一行添加如下相应命令: ...

  4. processing学习整理---Input(输入)

    1.鼠标1D. 左右移动鼠标可移动天平. “mouseX”变量用于控制矩形的大小和颜色. void setup(){ size(640,360); noStroke(); colorMode(RGB, ...

  5. 和BEM的战斗:10个常见问题及如何避免

    原文链接: https://segmentfault.com/a/1190000006135647 无论你是刚刚发现BEM或者已经是个中熟手(作为web术语来说),你可能已经意识到它是一种有用的方法. ...

  6. 内网批量测试登录机器工具,并且dir 目标机器c盘

    // Ipc.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdio.h> #include <w ...

  7. eclipse build path 以及 clean(转)

    1.设置"source folder"与"output folder". source folder:存放.Java源文件的根目录:output folder: ...

  8. Linux文件压缩/打包/解压

    在Linux日常维护中,经常需要备份同步一些比较重要的文件,而在传输过程中如果文件比较大往往会非常慢,而且还会非常占用空间,这时候就需要我们使用压缩工具对大文件进行压缩打包,下面我们来介绍一下常用的压 ...

  9. 集成 ActiveMQ 到应用服务器

    本章知识点 集成 ActiveMQ 和 Apache Tomcat 集成 ActiveMQ 和 Jetty 集成 ActiveMQ 和 Apache Geronimo 集成 ActiveMQ 和 JB ...

  10. django 添加自定义context

    文档参考;http://python.usyiyi.cn/django_182/ref/templates/api.html 添加自定义上下文文件custom_processors.py # codi ...