HttpModule的认识与深入理解

 

一个HTTP请求在HttpModule容器的传递过程中,会在某一时刻(ResolveRequestCache事件)将这个HTTP请求传递给HttpHandler容器。在这个事件之后,HttpModule容器会建立一个HttpHandler的入口实例,但是此时并没有将HTTP请求控制权交出,而是继续触发AcquireRequestState事件以及PreRequestHandlerExcute事件。在PreRequestHandlerExcute事件之后,HttpModule窗口就会将控制权暂时交给HttpHandler容器,以便进行真正的HTTP请求处理工作。


而在HttpHandler容器内部会执行ProcessRequest方法来处理HTTP请求。在容器HttpHandler处理完毕整个HTTP请求之后,会将控制权交还给HttpModule,HttpModule则会继续对处理完毕的HTTP请求信息流进行层层的转交动作,直到返回到客户端为止。

 

HttpModule过程在下面的事件:
BeginRequest    指示请求处理开始。
AuthenticateRequest PostAuthenticateRequest    封装请求身份验证过程。
AuthorizeRequest   PostAuthorizeRequest    封装请求授权过程。 
ResolveRequestCache PostResolveRequestCache    封装检查是否能利用以前缓存的输出页面处理请求的过程。
PostMapRequestHandler    指示已发现用于处理请求的 HTTP 处理程序。
AcquireRequestState    PostAcquireRequestState    封装对请求会话状态的检索。
PostRequestHandlerExecute    指示用于处理请求的 HTTP 处理程序已执行。
ReleaseRequestState   PostReleaseRequestState    封装对请求会话状态的发布。
UpdateRequestCache    PostUpdateRequestCache    封装检查是否应对请求的资源的输出进行缓存以备今后重复使用的过程。
EndRequest    指示请求处理结束。