我看到的所有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)正在被处理.当然,在出版商没有被处置的情况下,取消事件处理程序的挂钩是正确的做法.

Asp.net相关问答推荐

更新剃须刀页面中图表的值

逐步 ASP.NET 自动构建/部署

InvalidOperationException:在程序集上找不到UserSecretsIdAttribute

如何在 ASP.NET 中设置自动实现属性的默认值

当前http上下文的http动词

cookie 存储在系统的什么位置?

将 null 转换为字符串的函数

如何在 ASP.NET core rc2 中禁用浏览器缓存?

文本框的输入按键触发事件

Jquery asp.net 按钮单击事件通过 ajax

在 C# 中将 IHtmlContent/TagBuilder 转换为字符串

为什么对 ASP.NET MVC 控制器的调用不执行 DelegatingHandler?

显示单选按钮列表内联

如何为角色以及特定用户使用自定义授权属性?

ASP.NET IIS Web.config [内部服务器错误]

ASP.NET Core 中的 NuGet 包位置在哪里?

回发不适用于 aspx 页面作为默认文档

如何在 ASP.NET 中通过 LAN 访问您的网站

MVC3 值 Ajax 文件上传

如何将 DataTable 转换为类 Object?