我见过的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)。当然,在没有处理发布者的情况下,取消钩住事件处理程序是正确的选择。