首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确处理IHttpModule?

如何正确处理IHttpModule?
EN

Stack Overflow用户
提问于 2010-08-06 21:55:40
回答 2查看 5.2K关注 0票数 29

我所见过的所有IHttpModule实现如下所示:

代码语言:javascript
复制
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方法中订阅的事件吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-07 19:16:04

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

在这种情况下,取消订阅事件是没有意义的,因为无论如何都会释放发布者(HttpApplication)。当然,在发布者未被处理的情况下,解除事件处理程序将是正确的做法。

票数 28
EN

Stack Overflow用户

发布于 2017-02-09 04:34:50

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

代码语言:javascript
复制
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();
  } 
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3424438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档