Asp.net 用于集成的IIS 7的自定义HttpModule

Asp.net 用于集成的IIS 7的自定义HttpModule,asp.net,iis-7,httpmodule,integrated-pipeline-mode,Asp.net,Iis 7,Httpmodule,Integrated Pipeline Mode,我的自定义错误处理程序有问题。它应该是一个HttpModule,但是当我将它添加到我的web.config的system.webServer/modules标记中时,它不会被启动 这是我的web.config部分: <system.webServer> <modules> <add name="AspExceptionHandler" type="Company.Exceptions.AspExceptionHandler, Comp

我的自定义错误处理程序有问题。它应该是一个
HttpModule
,但是当我将它添加到我的
web.config
system.webServer/modules
标记中时,它不会被启动

这是我的
web.config
部分:

<system.webServer>
  <modules>
    <add name="AspExceptionHandler" 
         type="Company.Exceptions.AspExceptionHandler, Company.Exceptions" 
         preCondition="managedHandler" />
  </modules>
</system.webServer>

有人能给我解释一下我做错了什么,以及IIS 7集成管理管道模式是如何工作的吗?因为我找到的大多数答案都是关于为IIS 6配置
HttpModules

从我所看到的情况来看,您的思路是正确的。您是否已确保站点的应用程序池设置为托管管道模式


另外,如果您正在使用内置的Visual Studio web服务器(Cassini)进行测试,则
部分将被忽略。如果希望从那里加载模块,则需要IIS7或IIS7.5 Express。

我遇到了与未触发处理程序相同的问题,通过对上述代码进行以下更改,帮助我解决了此问题。我没有创建新的事件处理程序,而是将具有相同签名的方法附加到该事件

application.Error += ErrorHandler;

这对我来说是可行的,仍然在分析这种方式背后的原因是什么,附加处理程序在IIS7中起作用。

我遇到了这个问题,并发现没有关闭customErrors会阻止处理程序触发

ie:这是配置中需要的,以便在HttpModule中捕获错误事件:

<system.web>
    <customErrors mode="Off" />
</system.web>


感谢您的快速响应,我确实将应用程序池设置为托管管道模式。我在本地机器上使用IIS express进行了尝试,但失败后,我将该站点发布到一个使用IIS 7的服务器上。在那里,我可以看到模块正在加载,但它从未被触发。因此,我在猜测我做错了什么…我的web.config和一些清理/构建解决方案中出现了语法错误,并在稍后发布,它似乎可以工作…@jonas你能详细介绍一下你发现的web.config问题吗?我遇到了一个类似的问题,不知道我是否遇到了与您相同的问题。@They Call Memory抱歉,但我所做的基本上是一些尝试和错误,所以我真的不记得我是如何解决这个问题的。。。
<system.web>
    <customErrors mode="Off" />
</system.web>