代码之家  ›  专栏  ›  技术社区  ›  Jakub Å turc

如何正确处理IHTTP模块?

  •  25
  • Jakub Å turc  · 技术社区  · 16 年前

    所有实施 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

    2 回复  |  直到 16 年前
        1
  •  27
  •   Matt B    16 年前

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

    在这种情况下,取消订阅事件是没有意义的,因为发布服务器(HttpApplication)正在被释放。当然,在发布服务器未被处理的情况下,取消事件处理程序的挂钩是正确的做法。

        2
  •  4
  •   Thomas Langston    9 年前

    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();
      } 
    }
    
    推荐文章