如何正确处理IHttpModule?
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)正在被处置。 当然,在出版商没有被处置的情况下,解开事件处理程序是正确的。
如果需要在模块中实例化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();
}
}
链接地址: http://www.djcxy.com/p/43779.html