HttpContext是干什么的
2012-04-20 16:00
232 查看
这是MSDN对HttpContext的说明:
HttpContext 类:封装有关个别 HTTP 请求的所有 HTTP 特定的信息。 (网上说是上下文信息,啥又叫上下文呢?个人感觉说的不清不楚)
这是MSDN对它的备注:
为继承 IHttpModule
和 IHttpHandler
接口的类提供了对当前 HTTP 请求的HttpContext 对象的引用。该对象提供对请求的内部
Request、Response
和 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 事件
HttpContext 类:封装有关个别 HTTP 请求的所有 HTTP 特定的信息。 (网上说是上下文信息,啥又叫上下文呢?个人感觉说的不清不楚)
这是MSDN对它的备注:
为继承 IHttpModule
和 IHttpHandler
接口的类提供了对当前 HTTP 请求的HttpContext 对象的引用。该对象提供对请求的内部
Request、Response
和 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 事件
相关文章推荐
- 问题:HttpContext.Current.Session;结果:Session与HttpContext.Current.Session到底有什么区别呢?
- 什么情况下HttpContext.Current.Request.UrlReferrer为空
- HttpContext.Current.Session是什么??
- HttpContext.Current.Cache 与 HttpRuntime.Cache有什么区别?
- HttpContext是干什么的.
- HttpContext是干什么的?
- HttpContext.Current.Response和Response有什么区别?
- HttpContext是干什么的
- [转] HttpContext是干什么的
- Page.Cache,HttpContext.Cache,HttpRuntime.Cache,Hashtable有什么区别
- HttpContext是干什么的; asp.net 获取网站路径;DataSet读取xml文件;updatepanel 控件的局部刷新 always和condition
- Httpcontext是什么
- System.Web.HttpContext.Current是什么
- HttpContext.Current.Session是什么??
- HttpContext是干什么的; asp.net 获取网站路径;DataSet读取xml文件;updatepanel 控件的局部刷新 always和condition
- HttpContext是干什么的
- xmlns:tools="http://schemas.android.com/tools"以及tools:context=".ConfActivity"是什么意思
- HttpContext是干什么的
- System.Web.HttpContext.Current.Cache和System.Web.HttpRuntime.Cache有什么区别?
- xmlns:tools="http://schemas.android.com/tools"以及tools:context=".ConfActivity"是什么意思