码迷,mamicode.com
首页 > Web开发 > 详细

ASP.Net请求处理机制初步探索之旅 - Part 3 管道

时间:2016-01-10 17:02:51      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

1.先了解一下HttpModuleHttpHandlers

   它们帮助我们在ASP.NET页面处理过程的前后注入自定义的逻辑处理。一个是系统级别(可以改变请求的处理流程)另一个是业务级别的。

   如果你想要注入的逻辑是基于像‘.aspx‘,‘.html‘这样的扩展文件,那么你可以使用HttpHandler。在ASP.NET WebForm中,无论是一般处理程序还是WebPage都实现了IHttpHandler接口,而ASP.NET MVC中也有MvcHandler实现了IHttpHandler接口

   如果你想要在ASP.NET管道事件中注入逻辑,那么你可以使用HttpModule。举例如ASP.NET默认实现了针对WebForm和MVC的HttpModule,像ASP.NET MVC中默认使用的是UrlRoutingModule。具体实现方式是:通过改写Global文件或自定义一个实现IHttpModule接口的类并在Web.config中进行注册。

 

2.

 一个十分有价值的问题就是在什么事件中我们又可以做些什么?下表就展示了这个问题的答案:

Section Event Description
HttpModule BeginRequest 此事件标志着一个新的请求,它保证在每个请求中都会被触发。
HttpModule AuthenticateRequest 此事件标志ASP.NET运行时准备验证用户。任何身份验证代码都可以在此注入。
HttpModule AuthorizeRequest 此事件标志ASP.NET运行时准备授权用户。任何授权代码都可以在此注入。
HttpModule ResolveRequest 在ASP.NET中我们通常使用OutputCache指令做缓存。在这个事件中,ASP.NET运行时确定是否能够从缓存中加载页面,而不是从头开始生成。任何缓存的具体活动可以被注入这里。
HttpModule AcquireRequestState 此事件标志着ASP.NET运行时准备获得Session会话变量。可以对Session变量做任何你想要做的处理。
HttpModule PreRequestHandlerExecute 恰好在ASP.NET 开始执行事件处理程序前发生。可以预处理你想做的事。
HttpHandler ProcessRequest HttpHandler逻辑被执行。在这个部分我们将为每个页面扩展写需要的逻辑。
Page Init 此事件发生在ASP.NET页面且可以用来: 
1、动态地创建控件,如果你一定要在运行时创建控件; 
2、任何初始化设置 
3、母版页及其设置 
在这部分中我们没有获得viewstate、postedvalues及已经初始化的控件。
Page Load 在这部分ASP.NET控件完全被加载且在这里你可以写UI操作逻辑或任何其他逻辑。NOTE:这个事件也是我们最常见且最常用的一个事件。
Page Validate 如果在页面上你有验证器,你同样想在这里做一下检查。
Page Render 是时候将输出发送到浏览器。如果你想对最终的HTML做些修改,你可以在这里输入你的HTML逻辑。
Page Unload 页面对象从内存中卸载。
HttpModule PostRequestHandlerExecute 可以注入任何你想要的逻辑,在处理程序执行之后。
HttpModule ReleaseRequestState 如果你想要保存对某些状态变量的更改,例如:Session变量的值。
HttpModule UpdateRequestCache 在结束之前,你是否想要更新你的缓存。
HttpModule EndRequest 这是将输出发送到客户端浏览器之前的最后一个阶段。

ASP.Net请求处理机制初步探索之旅 - Part 3 管道

标签:

原文地址:http://www.cnblogs.com/tiantianle/p/5118577.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!