Pipeline完整的图例
MapHandlerExecutionStep、引发PostMapRequestHandler事件:当无法由输出缓存进行处理时,则进入了正规的处理过程中。而正规处理的第一步 ,就是根据配置获取IHttpHandler的实例对象, 从代码层次上说, 就是设置好HttpContext.Handler属性。该Handler将具体根据上下文信息生成具体的Html等代码。
最最常见的Handler对象就是Page类及其各个子类,也就是我们编写的每一个aspx页面,都是一个具体的Handler,MapHandlerExecutionStep类将根据用户访问各个aspx页面的url从而确定具体的page子类。
另外,还有HttpForbiddenHandler,当用户访问App_Code、App_Data等目录中的资源 时,MapHandlerExecutionStep就返回HttpForbiddenHandelr,该Handler将仅仅告诉用户该资源无法访问等 信息,从而起到保护特定资源的作用。
还有TraceHandler,该Handler当且仅当用户访问根目录下的"trace.axd"资源时返回,从而实现Asp.net跟踪的功能。
用户可以注册更多的自定义Handler,已满足更多的特定的需求。
在IIS7.0的集成管线模式下,还将引发MapRequestHandler事件。
PostMapRequestHandler事件默认不被任何Module订阅。