如何正确处理IHttpModule?

IHttpModule的所有实现我看过以下内容:

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

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

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

我想知道为什么Dispose方法总是空的? 我们不应该取消订阅我们在Init方法中订阅的事件吗?


HttpModule的生命周期与HttpApplication的生命周期紧密集成。 HttpModule的实例在应用程序启动时生成,并在应用程序被处理时销毁。

在这种情况下,退订该事件是没有意义的,因为出版商(HttpApplication)正在被处置。 当然,在出版商没有被处置的情况下,解开事件处理程序是正确的。


如果需要在模块中实例化IDisposable对象,则dispose方法将不会为空。

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();
  } 
}
链接地址: http://www.djcxy.com/p/43779.html

上一篇: How to dispose IHttpModule correctly?

下一篇: SELECT string AS column