如何以编程方式从ASP.NET管道中删除HttpModule?

时间:2011-08-18 13:11:06

标签: asp.net httpmodule

我们可以使用DynamicModuleUtility.RegisterModule(typeof (SomeHttpModule))以编程方式添加HttpModules - 有没有办法删除它们?

1 个答案:

答案 0 :(得分:-1)

  1. Init
  2. 中的Global.asax方法中实例化HTTP模块
  3. 按照here
  4. 所述致电Module.Init(
  5. 在模块的Init方法中,挂钩所需的事件处理程序。
  6. 覆盖处理程序中的Dispose方法并取消挂钩 事件处理器。
  7. 将实例公开为global.asax上的公共属性,以便您 如果要取消注册模块,可以调用Dispose

    // Global.asax
    
  8. public IHttpModule MyModuleInstance {get;私人集; }

    public override void Init()
    {
        base.Init();
        MyModuleInstance = new MyModule();
        MyModuleInstance.Init(this);
    }
    
    
    
     // MyModule.cs
        public void Dispose()
        {
            _context.BeginRequest -= context_BeginRequest;
        }
    
        public void Init(HttpApplication context)
        {
            _context = context;
            context.BeginRequest += context_BeginRequest;
        }
       private void context_BeginRequest(object sender, EventArgs e)
        {
            HttpApplication app = sender as HttpApplication;
            app.Context.Response.Write("Hello from OnBeginRequest in custom module.<br>");
        }
    

    //取消注册

    protected void Button1_Click(object sender, EventArgs e)
        {
            this.ApplicationInstance.MyModuleInstance.Dispose();
        }