Jak*_*urc 25 c# asp.net httpmodule
我见过的所有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方法中订阅的事件吗?
Mat*_*t B 24
HttpModule的生命周期与HttpApplication的生命周期紧密集成.应用程序启动时会生成HttpModule实例,并在处理应用程序时将其销毁.
在这种情况下,取消订阅事件是没有意义的,因为无论如何都要处理发布者(HttpApplication).当然,在发布者没有被处理的情况下,取消事件处理程序是正确的.
The dispose method won't be empty if you need to instantiate IDisposable objects inside your module.
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();
  } 
}
| 归档时间: | 
 | 
| 查看次数: | 4569 次 | 
| 最近记录: |