代理HttpModule的类,如何在web.config中正确地注册?
我自定义了一个代理HttpModule的类UrlReWriteHttpModule,代码如下:
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Text.RegularExpressions;namespace MyModule{ /// <summary> ///UrlReWriteHttpModule 的摘要说明 /// </summary> public class UrlReWriteHttpModule : IHttpModule { public UrlReWriteHttpModule() { // //TODO: 在此处添加构造函数逻辑 // } public void Dispose() { //throw new Exception("The method or operation is not implemented."); } public void Init(HttpApplication context) { context.BeginRequest += new EventHandler(context_BeginRequest); } void context_BeginRequest(object sender, EventArgs e) { if (DictionaryClass.CallToUrlReWriteHttpModule_BOOL_Execute == false) //假如HTTP的请求是重写的.aspx,则返回 { DictionaryClass.CallToUrlReWriteHttpModule_BOOL_Execute = true; return; } HttpContext Context = (sender as HttpApplication).Context; Regex reg1 = new Regex(@"(?<=.+)\.aspx(?=\?.+)?", RegexOptions.IgnoreCase); //匹配最初的.aspx请求 Match math1 = reg1.Match(Context.Request.RawUrl); if (math1.Success) { DictionaryClass.MachingUrl(Context); Context.Response.Redirect(DictionaryClass.Str_FakePath); //从最初的.aspx重定向到对应的.html } } }}<system.web> <httpModules> <add name="MyHttpModule" type="MyModule.UrlReWriteHttpModule"/> </httpModules> <httpHandlers> <add verb="*" path="*.html" type="UrlRewriter"/> </httpHandlers> ......</system.web>
<httpModules> <add name="UrlReWriteHttpModule" type="MyModule.UrlReWriteHttpModule,App_Code"/> </httpModules>