有关IHttpModule与页面的执行顺序

  IHttpModule 是作为ASP.NET 应用程序生命周期的一个扩展接口,通过对其进行扩展可以在我们常用的aspx文件执行前后做一些通用的处理,比如验证用户或者配置权限。

 

  1. 对请求进行验证,将检查浏览器发送的信息,并确定其是否包含潜在恶意标记。
  2. 如果已在 Web.config 文件的 UrlMappingsSection 节中配置了任何 URL,则执行 URL 映射。
  3. 引发 BeginRequest 事件。
  4. 引发 AuthenticateRequest 事件。
  5. 引发 PostAuthenticateRequest 事件。
  6. 引发 AuthorizeRequest 事件。
  7. 引发 PostAuthorizeRequest 事件。
  8. 引发 ResolveRequestCache 事件。
  9. 引发 PostResolveRequestCache 事件。
  10. 根据所请求资源的文件扩展名(在应用程序的配置文件中映射),选择实现 IHttpHandler 的类,对请求进行处理。如果该请求针对从 Page 类派生的对象(页),并且需要对该页进行编译,则 ASP.NET 会在创建该页的实例之前对其进行编译。
  11. 引发 PostMapRequestHandler 事件。
  12. 引发 AcquireRequestState 事件。
  13. 引发 PostAcquireRequestState 事件。
  14. 引发 PreRequestHandlerExecute 事件。
  15. 为该请求调用合适的 IHttpHandler 类的 ProcessRequest 方法(或异步版 IHttpAsyncHandler..::.BeginProcessRequest)。例如,如果该请求针对某页,则当前的页实例将处理该请求。
  16. 引发 PostRequestHandlerExecute 事件。
  17. 引发 ReleaseRequestState 事件。
  18. 引发 PostReleaseRequestState 事件。
  19. 如果定义了 Filter 属性,则执行响应筛选。
  20. 引发 UpdateRequestCache 事件。
  21. 引发 PostUpdateRequestCache 事件。
  22. 引发 EndRequest 事件。
  23. 引发 PreSendRequestHeaders 事件。
  24. 引发 PreSendRequestContent 事件。

看到这么多茫茫然的事件,蒙了不知道是做什么的,也不知道与Page的执行顺序哪些事件在前哪些事件在后,于是做个小小的测试,可以发现在context_PostRequestHandlerExecute之前的一个步骤是进行自己页面编写的顺序,然后其前面则是优先于aspx页面先执行。

 image

posted @ 2010-03-04 13:21  枫崖  阅读(277)  评论(0编辑  收藏  举报