Asp.net Elmah:ErrorLog_过滤事件处理程序未在IIS7下调用

Asp.net Elmah:ErrorLog_过滤事件处理程序未在IIS7下调用,asp.net,web-config,elmah,Asp.net,Web Config,Elmah,我在Elmah中启用了错误日志过滤,并希望在ErrorLog\u过滤事件处理程序中以编程方式进行过滤。它在visualstudiodevserver下运行良好,但只要我使用IIS7(在我的开发机器上是本地的,或者在我的web服务器上是远程的),就不会调用处理程序(错误日志记录工作良好) 以下是我常用的web.config: <configuration> <configSections> <sectionGroup name="elmah">

我在Elmah中启用了错误日志过滤,并希望在ErrorLog\u过滤事件处理程序中以编程方式进行过滤。它在visualstudiodevserver下运行良好,但只要我使用IIS7(在我的开发机器上是本地的,或者在我的web服务器上是远程的),就不会调用处理程序(错误日志记录工作良好)

以下是我常用的web.config:

<configuration>

  <configSections>

    <sectionGroup name="elmah">
      <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
      <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
      <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
      <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
      <section name="errorTweet" requirePermission="false" type="Elmah.ErrorTweetSectionHandler, Elmah" />
    </sectionGroup>
  </configSections>

  <elmah>
    <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="ShopMvcConnectionString" />
  </elmah>

  <system.web>

    <httpHandlers>
      <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
    </httpHandlers>

    <httpModules>
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
    </httpModules>

  </system.web>

  <system.webServer>

    <modules runAllManagedModulesForAllRequests="true">
      <add name="Elmah.ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
      <add name="Elmah.ErrorFilter" type="Elmah.ErrorFilterModule" preCondition="managedHandler" />
    </modules>

    <handlers>
      <add name="Elmah" path="elmah.axd" verb="POST,GET,HEAD" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
    </handlers>
  </system.webServer>

</configuration>

未在IIS 7下调用处理程序的原因是您对模块的命名不同。您在
system.web/httpModules
下将其命名为
ErrorLog
,然后在
system.webServer/modules
下将其命名为
Elmah.ErrorLog

通过命名约定工作,在此约定中,事件处理程序必须以配置中的模块名称命名,后跟下划线(
),后跟事件名称
ErrorLog\u筛选
正常,并与
system.web/httpModules
下的注册名称匹配,并且该名称正由。您只需要确保匹配所有名称,并且它应该在两种环境中都能工作


另请参见:

您完全正确。谢谢。我猜我做了一些复制/粘贴,没有意识到Elmah前缀的存在。
public void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e)
{
}