HttpModule的认识

asp.net的HTTP请求处理过程

 

 

       完整的http请求在asp.net framework中的处理流程:
HttpRequest-->inetinfo.exe->ASPNET_ISAPI.DLL-->HttpPipeline-->ASPNET_WP.EXE-->HttpRuntime-->HttpApplicationFactory-->HttpApplication-->HttpModule-->HttpHandlerFactory-->HttpHandler-->HttpHandler.ProcessRequest()

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

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

2) 编写自己的HttpModule

2.1 编写自己的httpModule类,需要实现IHttpModule接口

2.2 webconfig.xml <system.web>节点中添加

<httpModules>

 

                            <addname="myHttpModule"type="命名空间.类名"/>

                           

                   </httpModules>

2.3 需要注意的地方,类文件要放在app_code中,否则会找不到程序集(目前只发现这种解决方案)

 

更多详细信息http://www.cnblogs.com/tangself/archive/2011/03/28/1998007.html


 


你可能感兴趣的:(工作,asp.net,HttpModule)