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 !!!
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么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();
}
}
Run Code Online (Sandbox Code Playgroud)