IIS 不会从 web.config 加载自定义 HTTP 模块

Mik*_*ain 20 iis asp.net httpmodule

我有一个用于从 web.config 加载的 ASP.NET MVC3 网站的自定义 HTTP 模块:

<system.web>
    <httpModules>
      <add name="MyModule" type="MySolution.Web.MyHttpModule, MySolution.Web" />
    </httpModules>
</system.web>
Run Code Online (Sandbox Code Playgroud)

当我从 VS Web 服务器中运行站点时,模块正确加载(命中了我的 Init 方法中的断点),但是当我在 IIS 中托管它时,它似乎被忽略了(断点丢失并且模块的功能不存在)从网站)。我已经在两个单独的 IIS 机器上尝试过,结果相似。

我究竟做错了什么?是否有一个设置我必须轻弹启用 IIS 才能从站点的 web.config 加载模块?

Mik*_*ain 26

我在问这个问题后不久就发现了这一点 - IIS7 对 web.config 使用了不同的架构。加载模块的正确位置现在是:

<system.webServer>
  <modules>
    <add name="MyModule" type="MySolution.Web.MyHttpModule, MySolution.Web" />
  </modules>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

  • 可能区别不是 IIS6 与 IIS7,而是经典模式与集成模式。 (4认同)
  • 遇到了同样的问题,这篇文章帮我解决了这个问题。我确实发现需要同时保留 system.web/httpModules 和 system.webServer/modules 才能让我的自定义模块同时在本地开发服务器和生产服务器上工作。 (3认同)