Asp.net中的HttpContext
来源:互联网 发布:win7怎么设置网络密码 编辑:程序博客网 时间:2024/06/05 10:18
HttpContext类:封装有关个别HTTP请求的所有HTTP特定的信息,又叫上下文。
看到这个解释,我觉得有些抽象,Http特定信息具体又是什么?看了下备注:
为继承 IHttpModule 和 IHttpHandler 接口的类提供了对当前 HTTP 请求的 HttpContext 对象的引用。该对象提供对请求的内部 Request、Response 和 Server 属性的访问。
这样一来,一下子又冒出来2个新东西: IHttpModule 和 IHttpHandler。真叫人抓狂啊。
先看HttpContext:
1.声明周期:从用户发送请求开始到服务器处理完请求并生成内容返回到客户端为止。原来就是从点击一个链接开始,到看到这个链接里的全部内容为止,这个理解了。
备注:针对每个不同用户的请求,服务器都会创建一个新的HttpContext实例直到请求结束,服务器销毁这个实例.
2.HttpContext的作用:处理请求的属性如:request,response,server等。其实我们在开发asp.net页面的时候,可以直接使用request...这些类啊,为什么要通过HttpContext类来访问呢?原来,request等这些类可以在asp或aspx页面的代码中直接使用,但是在IHttpModule或IHttpHandler中就不能直接使用了。这是因为要在特殊场合访问request等。因为HttpContext类对Request,Respose,Server等等都进行了封装,并保证在整个请求周期内都可以随时随地的调用.)OK,这个也理解了。
3.HttpContext其它功能:HttpContext还可以处理CacHe,HttpContext.Item等,在其生命周期内可以存储一些临时数据,方便随时使用。
再度理解HttpContext:
当用户发送某个Http请求,我们可以通过HttpContext进行截获,查看里面包含了哪些请求的信息,然后可以进行一系列的操作,比如说切换到其他的页面,这个时候,可以重组请求的数据满足新页面的要求。即:即使不在page页面中,也可以通过HttpContext的Current属性来获取当前的web状态。
正是由于此,我们可能在程序中滥用HttpContext,这里有一篇文章可以帮助大家理解为什么不能滥用HttpContext:
http://odetocode.com/articles/112.aspx
是英文的,我的翻译水平有限,但能看懂个大概。虽然是04年的文章,但是,加入你没有看过或理解HttpContext,它对于我们来说都是新的。
当然了,要想完全理解HttpContext,我们还需要了解很多知识:比如:Cache,Profile,IHttpHandler,IHttpModule。这些知识一定要在实践中才能理解的更加深入。以后有机会再总结一下。
- Asp.net中的HttpContext
- 对于asp.net中的服务器变量HttpContext.Current.Request.ServerVariables
- Asp.Net HttpContext.RemapHandler 用法
- ASP.NET的HttpContext基础知识
- ASP.NET 使用HttpContext.Current.Cache
- ASP.NET基础之HttpContext学习
- ASP.NET Core开发之HttpContext
- ASP.NET基础之HttpContext学习
- asp.net core 对HttpContext 的扩展
- ASP.NET Core开发之HttpContext
- asp.net 网页 初始创建 系统就设置了 HttpContext System.Web.HttpContext 所有属性
- ASP.NET System.Web.HttpContext类Current属性 的运用
- ASP.NET System.Web.HttpContext类Current属性
- c# asp.net webservice asmx中保存HttpContext.Current
- HttpApplication,HttpModule,HttpContext及Asp.Net页生命周期
- asp.net 应用程序对象 HttpContext 和 HttpApplication (1)
- asp.net 应用程序对象 HttpContext 和 HttpApplication (2)
- ASP.NET MVC中HttpContext, HttpContextBase, HttpContextWrapper联系
- struts2与struts1的区别
- 关于ToolRotate——Android屏幕方向旋转的根源
- 后台性能测试总结—测试准备篇
- asp.net天轰穿视频学习总结
- vector,map,list,queue区别
- Asp.net中的HttpContext
- 代码分析工具推荐Understand
- 奇怪问题绑定和监听127.0.0.1把网络禁用还是可以成功。当网络断开时accept不会返回错误。网络再次连上时还能正常工作。
- GCC
- unix环境高级编程编译方法 -apue最简单编译方法(第二版)
- javascript window.open()方法小结
- hdu 2570 迷瘴
- Maven出现以下问题:The Maven Integration requires that Eclipse be running in a JDK, because a number of Maven core plugins are using ja
- 今天第一次在csdn上面来发表的问题了