读书人

代理HttpModule的类怎么在web.confi

发布时间: 2012-06-28 15:20:03 作者: rapoo

代理HttpModule的类,如何在web.config中正确地注册?
我自定义了一个代理HttpModule的类UrlReWriteHttpModule,代码如下:

C# code
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            }        }    }}

web.config的配置如下:
XML code
<system.web>    <httpModules>      <add name="MyHttpModule" type="MyModule.UrlReWriteHttpModule"/>    </httpModules>    <httpHandlers>      <add verb="*" path="*.html" type="UrlRewriter"/>    </httpHandlers>     ......</system.web>


但是程序运行的时候,网页一直重定向,不知道为什么。在UrlReWriteHttpModule的context.BeginRequest += new EventHandler(context_BeginRequest);此处断点,但是发现程序根本没“走”到这里。

请问大家,是我在web.config中写法错了,还是节点httpModules和httpHandlers起冲突?或者其他原因?

[解决办法]
XML code
<httpModules>      <add name="UrlReWriteHttpModule" type="MyModule.UrlReWriteHttpModule,App_Code"/>    </httpModules> 

读书人网 >asp.net

热点推荐