我见过的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)。当然,在没有处理发布者的情况下,取消钩住事件处理程序是正确的选择。

07-26 09:39