Http Handler And Http Module
2013-09-19 14:55
405 查看
Http Module and Http Handler
. Relation
.Page Event Pipe
For Http Module:
· for each request,
all http modules will be go through .
· if have multiple modules ,execute order ? for example :
Module A, which subscribes toEndRequest
Module B, which subscribes toBeginRequest and EndRequest
Module C, which subscribes toAuthenticateRequest
The order of execution will be:
Module B, BeginRequest
Module C, AuthenticateRequest
Module A, EndRequest
Module B, EndRequest
For Http Handler
for each request , only ONE handler will be mapped to do some logic, depending on the configuration in web.config.
.configuration :
for http module :
<system.webServer> <modules> <addname="urlRewrittingModule"type="WebCode.asp.net.HttpModule.UrlRewriterModule"/> </modules> </system.webServer>
for http handler:
<system.webServer> <handlers> <addverb="*" name="urlRewritingHandler" path="*.aspx"type="WebCode.asp.net.HttpHandler.UrlRewriterHandler"/> </handlers> </system.webServer>
when use
Http Handler
Whenever want to handle some request but no need the UI pageHttp Module
Authentication ,Application log , Auditing , URLRewritingcode example :
http module(using http module to rewrite url) :
public class UrlRewriterModule : IHttpModule { public voidDispose() { //clean-upcode here. } public voidInit(HttpApplication context) { context.AuthenticateRequest += ContextOnAuthenticateRequest; context.BeginRequest += ContextOnBeginRequest; context.AuthorizeRequest += context_AuthorizeRequest; context.PreRequestHandlerExecute += ContextOnPreRequestHandlerExecute; context.PostRequestHandlerExecute += ContextOnPostRequestHandlerExecute; context.EndRequest += ContextOnEndRequest; } #region BEFOREhandler private void ContextOnPreRequestHandlerExecute(objectsender, EventArgs eventArgs) { } private voidcontext_AuthorizeRequest(object sender, EventArgs e) { } private voidContextOnBeginRequest(object sender, EventArgs eventArgs) { //test URLrewritten varcontext = ((HttpApplication)sender).Context; if(context.Request.RawUrl.Contains("ExploreRedirect")) { context.RewritePath("ExploreRedirect.aspx","","SN="+ Guid.NewGuid()); } } private voidContextOnAuthenticateRequest(object sender, EventArgs eventArgs) { } #endregion #region AFTERhandler private voidContextOnEndRequest(object sender, EventArgs eventArgs) { } private voidContextOnPostRequestHandlerExecute(object sender, EventArgs eventArgs) { } #endregion }
http handler:
public classUrlRewriterHandler : IHttpAsyncHandler { public voidProcessRequest(HttpContext context) { //dosomething } privateAction<HttpContext> _process; public boolIsReusable { get; private set; } publicIAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, objectextraData) { _process =ProcessRequest; return_process.BeginInvoke(context, cb, extraData); } public voidEndProcessRequest(IAsyncResult result) { _process.EndInvoke(result); } }
相关文章推荐
- what is HTTPModule and HttpHandler(http://forums.asp.net/p/1011421/1350924.aspx#1350924)
- web.config add handlers and httpmodule to System.Web section.
- HTTP Handlers and HTTP Modules in ASP.NET
- HTTP Handlers and HTTP Modules Overview
- ASP.NET内部原理(HttpHandler和HttpModule)
- HttpClient, HttpClientHandler, and WebRequestHandler Explained
- HttpClient, HttpClientHandler, and WebRequestHandler Explained
- ASP.NET必须知道的:HttpModule,HttpHandler
- HttpHandler和HttpModule 心得介绍
- MVC TIP7:自定义IHttpModule、IRouteHandler实现路由调试
- Create a httpmodule and session authentification
- HttpHandler与HttpModule的用处与区别
- 备忘一点ASP.net的东东:说说HttpHandler和HttpModule的区别及处理顺序
- C#强化系列文章八:HttpModule,HttpHandler,HttpHandlerFactory简单使用
- HttpModule和HttpHandler【预处理】
- 可测试的HttpModule和HttpHandler
- Asp.net中的HttpModule和HttpHandler的简单用法
- HTTP Handlers and HTTP Modules in ASP.NET
- asp.net架构之请求处理过程:HttpModule,HttpHandler
- Images; How to create an HTTP handler to dynamically resize images and change quality.