我所见过的所有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方法中订阅的事件吗?
发布于 2010-08-07 19:16:04
HttpModule的生命周期与HttpApplication的生命周期紧密集成。HttpModule实例是在应用程序启动时生成的,并在应用程序被释放时销毁。
在这种情况下,取消订阅事件是没有意义的,因为无论如何都会释放发布者(HttpApplication)。当然,在发布者未被处理的情况下,解除事件处理程序将是正确的做法。
发布于 2017-02-09 04:34:50
如果需要在模块内实例化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();
}
}https://stackoverflow.com/questions/3424438
复制相似问题