HttpContext详解
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 事件
HttpContext详解的更多相关文章
- HttpContext详解【转】
HttpContext 类:封装有关个别 HTTP 请求的所有 HTTP 特定的信息. 在处理请求执行链的各个阶段中,会有一个对象在各个对象之间进行传递,也即会保存请求的上下文信息,这个对象就是Htt ...
- ASP.NET Core 中 HttpContext 详解与使用 | Microsoft.AspNetCore.Http 详解 (转载)
“传导体” HttpContext 要理解 HttpContext 是干嘛的,首先,看图 图一 内网访问程序 图二 反向代理访问程序 ASP.NET Core 程序中,Kestrel 是一个基于 li ...
- ASP.NET Core 中 HttpContext 详解与使用 | Microsoft.AspNetCore.Http 详解
笔者没有学 ASP.NET,直接学 ASP.NET Core ,学完 ASP.NET Core MVC 基础后,开始学习 ASP.NET Core 的运行原理.发现应用程序有一个非常主要的 “传导体” ...
- .NET应用和AEAI CAS集成详解
1 概述 数通畅联某综合SOA集成项目的统一身份认证工作,需要第三方系统配合进行单点登录的配置改造,在项目中有需要进行单点登录配置的.NET应用系统,本文专门记录.NET应用和AEAI CAS的集成过 ...
- Kooboo CMS - Html.FrontHtml.Position 详解
DataContract 数据契约 http://www.cnblogs.com/Gavinzhao/archive/2010/06/01/1748736.html https://msdn.micr ...
- MVC过滤器详解
MVC过滤器详解 APS.NET MVC中(以下简称"MVC")的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再加一些额外的逻辑处理. ...
- OutputCache属性详解(三)— VaryByHeader,VaryByCustom
目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...
- ASP.NT运行原理和页面生命周期详解及其应用
ASP.NT运行原理和页面生命周期详解及其应用 1. 下面是我画的一张关于asp.net运行原理和页面生命周期的一张详解图.如果你对具体不太了解,请参照博客园其他帖子.在这里我主要讲解它的实际应用. ...
- ASP.NET 运行时详解 揭开请求过程神秘面纱
对于ASP.NET开发,排在前五的话题离不开请求生命周期.像什么Cache.身份认证.Role管理.Routing映射,微软到底在请求过程中干了哪些隐秘的事,现在是时候揭晓了.抛开乌云见晴天,接下来就 ...
随机推荐
- Debian/Ubuntu/CentOS VPS安装Net-Speeder并优化
安装过程: CentOS安装 wget --no-check-certificate https://gist.github.com/LazyZhu/dc3f2f84c336a08fd6a5/raw/ ...
- 测试键盘的控制字符对应的ASCII码值
#include <stdio.h>#include <termio.h> //终端操作头文件 char getch(void){ struct termio ...
- HTML5 和HTML4的区别
1.推出理由和目标 HTml5的出现,对于web来说意义是非常重大的,因为它的意图是想要把目前web 上存在的各种问题一并解决掉. (1)web之间的兼容性很低 (2)文档结构不明确 (3)web应用 ...
- sass入门教程
一.什么是SASS SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护. 二.安装和使用 2.1 安装 SASS是Ruby语言写的,必须先 ...
- CSS各类标签用法——选择器
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- openssl
openssl genrsa -des3 -out server.key 1024openssl req -new server.key -out servr.csr seserver-fnamese ...
- C语言学习1——结构体剖析
一、定义结构体变量的方法 1.1先声明结构体类型在定义变量名 例如: a.声明结构体类型 struct student { int num; char name[20]; char sex; int ...
- JavaScript判断数据类型
JavaScript中判断数据类型的方式有三种: 1.typeof typeof 1; //"number" typeof "abc"; //" ...
- Ext JS 4 老特征:statics 静态的变量和方法
l 一.静态的变量和静态的方法 [译文原创Learning Ext JS 4 第51页] Statics的方法只属于类本身,而不属于任何一个实例,这就决定了我们是在定义类的内部来用statics方 ...
- Socket支持多用户并发访问的解决办法
//创建线程池,池中具有(cpu个数*50)条线程 ExecutorService executorService = Executors.newFixedThreadPool(Runtime.get ...