在处理该请求时将由 HttpApplication 类执行以下事件。希望扩展 HttpApplication 类的开发人员尤其需要注意这些事件。
1. 对请求进行验证,将检查浏览器发送的信息,并确定其是否包含潜在恶意标记。有关更多信息,请参见 ValidateRequest 和脚本侵入概述 。
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 事件(在这个事件里才可以使用用户状态信息,如:Session)。
13.引发 PostAcquireRequestState 事件。
14.引发 PreRequestHandlerExecute 事件。
15.为该请求调用合适的 IHttpHandler 类的 ProcessRequest 方法(或异步版 BeginProcessRequest )。例如,如果该请求针对某页,则当前的页实例将处理该请求。
16.引发 PostRequestHandlerExecute 事件。
17.引发 ReleaseRequestState 事件。
18.引发 PostReleaseRequestState 事件。
19.如果定义了 Filter 属性,则执行响应筛选。
20.引发 UpdateRequestCache 事件。
21.引发 PostUpdateRequestCache 事件。
22.引发 EndRequest 事件。
AcquireRequestState 事件,当实际服务请求的处理程序获得与该请求关联的状态信息时发生。在这个事件发生时才能取到Session中是userId信息。 BeginRequest事件在AcquireRequestState之前发生,把取Session状态的代码放在BeginRequest中肯定是取不到的。
本文详细介绍了ASP.NET处理HTTP请求的整个过程,包括从请求验证到处理结束的22个关键步骤。重点讲解了不同阶段发生的事件,如BeginRequest、AuthenticateRequest及AcquireRequestState等,有助于理解ASP.NET应用的工作原理。
131

被折叠的 条评论
为什么被折叠?



