¿Cómo eliminar IHttpModule correctamente?


Toda la implementación de IHttpModule He visto lo siguiente:

class HttpCompressionModule : IHttpModule
{
  public void Init(HttpApplication application)
  {
    application.SomeEvent += OnSomeEvent;
  }

  private void OnSomeEvent(Object source, EventArgs e)
  {
    // ...
  }

  public void Dispose() 
  {
    // nothing here !!!
  } 
}

Me pregunto por qué el método Dispose siempre está vacío? ¿No deberíamos cancelar la suscripción al evento que suscribimos en el método Init?

Author: Bill the Lizard, 2010-08-06

2 answers

El ciclo de vida de un HttpModule está estrechamente integrado con el ciclo de vida de una aplicación HttpApplication. Las instancias de HttpModule se generan cuando se inicia la aplicación y se destruyen cuando se elimina la aplicación.

En este caso no tiene sentido darse de baja del evento porque el editor (HttpApplication) está siendo eliminado de todos modos. Por supuesto, en una situación en la que el editor no estaba siendo eliminados, desenganchando el controlador de eventos sería lo correcto hacer.

 24
Author: nukefusion,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-07 11:16:04

El método dispose no estará vacío si necesita crear instancias de objetos identificables dentro de su módulo.

class HttpCompressionModule : IHttpModule
{
  private IDisposalbe _myResource;

  public void Init(HttpApplication application)
  {
    _myResource = new MyDisposableResource();
    application.SomeEvent += OnSomeEvent;
  }

  private void OnSomeEvent(Object source, EventArgs e)
  {
    // ...
    myResource.DoSomething();
  }

  public void Dispose() 
  {
    _myResource.Dispose();
  } 
}
 3
Author: Thomas Langston,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-14 14:31:29