Как программно удалить HttpModule из конвейера ASP.NET? - PullRequest
1 голос
/ 18 августа 2011

Мы можем программно добавлять HttpModules, используя DynamicModuleUtility.RegisterModule(typeof (SomeHttpModule)) - есть ли способ их удалить?

1 Ответ

0 голосов
/ 18 августа 2011
  1. Создание модуля HTTP в методе Init в методе Global.asax
  2. Вызов Module.Init(), как описано здесь
  3. В методе Initвашего модуля, перехватите необходимые обработчики событий.
  4. Переопределите метод Dispose в обработчике и отцепите обработчики событий.
  5. Предоставьте экземпляр как открытое свойство на global.asax, чтобыможет вызвать Dispose, если вы хотите отменить регистрацию модуля

    // Global.asax
    

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();
    }
...