HttpContext 类:封装有关个别 HTTP 请求的所有 HTTP 特定的信息。

在处理请求执行链的各个阶段中,会有一个对象在各个对象之间进行传递,也即会保存请求的上下文信息,这个对象就是HttpContext对象。HttpContext封装了ASP.NET要处理的单次请求的所有信息。在请求处理机制建立时,HttpContext类有HttpRuntime对象实例化,接着该对象会经历请求生存期的各个阶段

HttpContext的介绍:保持单个用户、单个请求的数据,并且数据只在该请求期间保持。被提供用于保持需要在不同的HttpModules和HttpHandlers之间传递的值。它也可以用于保持某个完整请求的相应信息。

Current属性是个十分有用的静态成员,返回当前请求的HttpContex对象。Items是一个哈希表,在处理请求所涉及的模块和处理程序间共享数据。每个自定义模块或处理程序能够将自身信息添加到请求的HttpContext对象中,在Items中存储的信息最终被页面使用,但这些信息只能在请求的执行期间访问

用法
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");
}

//特别说明Server。Transfer是在服务器直接操作的的和调用的地方属于同一次http请求,此处如果使用Response.Redirect则再WebForm2中再次访问Context.Items["WebForm1List"]时,Context.Items["WebForm1List"]null,因为Response.Redirect是重新发起了一次Http请求

对于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 事件

最新文章

  1. 动态加载jar包中的类(方式一)
  2. 移动前端UI选择
  3. <实训|第十二天>用LVM对linux分区进行动态扩容
  4. 超强语感训练文章(Provided by Rocky teacher Prince)
  5. 获取datable中某行某列的数据
  6. Android -- 获取汉字的首字母
  7. Java再学习——随机面试题
  8. 你所不知道的 URL
  9. 移动端meta标签整理-备
  10. 查看SharePoint list的xml
  11. 如何解决DE0-Nano的EPCS16 无法下载的问题:NO EPCS LAYOUT DATA --- LOOKING FOR SECTION [EPCS-XXXXXX]
  12. Oracle 多表关联更新
  13. 【图文详解】linux下配置远程免密登录
  14. LeetCode 80 Remove Duplicates from Sorted Array II(移除数组中出现两次以上的元素)
  15. redis基本使用
  16. WPF自定义ComboBox
  17. 【BZOJ 2822】2822: [AHOI2012]树屋阶梯(卡特兰数+高精度)
  18. 设备树(Device Tree)
  19. MySQL InnoDB的一些参数说明
  20. git之删除过滤

热门文章

  1. UVA 10129-Play on Words(欧拉通路)
  2. Extjs实现进度条
  3. 遍历父视图上的button
  4. 关于《平安iOS面试》小结
  5. 实现怎样支持Android重力感应器Sensor编程
  6. Paxos算法深入分析
  7. javascirpt的apply和call
  8. 常用几个UITableView,UICollectionView  UIScrollView关键点
  9. Java 面向对象(转)
  10. Java-----隐藏手机号中间四位