从 GAC 配置托管 httpmodule 以在经典和集成模式下工作

Configure managed httpmodule from GAC to work both in Classic and Integrated modes

我开发了一个自定义托管的 HttpModule (.NET 2),将其安装在 GAC 上,并将其添加到全局 IIS 8.5 的 Modules 部分。

对于每个具有 集成模式 的网站,此模块在其模块部分中显示为 Inherited 并且它按照为所有 .NET 设计的方式工作2 和 .NET 4 Web 应用程序(无需操作每个站点的 Web.Config).

至于 经典模式 中的网站,它不存在,因此无法在经典 Web 应用程序中访问和工作。

我尝试以任何方式编辑 applicationHost.configWeb.Config(v2 和 v4),但我没有得到任何结果(似乎 Machine.Config 没有位置)。

如何以及在哪里可以全局注册相同的模块来处理经典模式,而无需将 dll 添加到 bin and/or 编辑每个网站的 Web.Config?

好的,现在可以了。供日后参考:

我编辑了 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config 但没有得到任何响应,因为 IIS 从 64 位框架读取配置,所以在 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config 中添加模块解决了问题。

或者,对于 AppPools < .NET 4,C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\machine.configC:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config 也必须进行编辑。

对于集成模式,通过 IIS GUI 添加自定义模块到主模块部分就足够了。

因此,安装在 GAC 上的一个自定义模块可用于 IIS、集成和经典、32 位和 64 位下的所有 .NET 2.0 + 网站,无需单独编辑每个网站的 Web.Config。

这对于主机管理员和服务器管理员在无需直接干预的情况下监控网站活动(错误、DDOS 攻击等)尤其有用。