Http Handler And Http Module
来源:互联网 发布:英雄联盟网络波动 编辑:程序博客网 时间:2024/06/05 11:44
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 page
Http Module
Authentication ,Application log , Auditing , URLRewriting
code 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); } }
- Http Handler And Http Module
- Http Module 介绍
- Http Module 介绍
- Http Module 介绍
- Http Compression module
- Http Module 介绍
- Http Module 介绍
- Http Module 介绍
- Http Module 介绍
- Http Module 介绍[转]
- Http Module 介绍
- Http Module 介绍
- 【转】Http Module 介绍
- Http Module 介绍
- .NET中的 Http Module
- Http Module 介绍
- Http Module 介绍
- C# HTTP Module 注册
- HDU 3307 Description has only two Sentences
- SimpleCursorAdapter简单实例(附源码)
- 黑客的攻击 Hacker‘s crackdown UVA11825 状态压缩动态规划
- Levenshtein Distance算法java实现,英文单词相似度
- 2013 Multi-University Training Contest 3 (g) The Unsolvable Problem
- Http Handler And Http Module
- [各种面试题] 大数乘法
- 指令周期、时钟周期、总线周期概念辨析
- DeviceToken
- poj-2411-状态压缩DP
- 搜索引擎工作原理
- Java基础 (三)(正则表达式,基本类型)
- 欧几里得原理求公约数的理解
- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据