gpt4 book ai didi

asp.net - Elmah:在 IIS7 下未调用 ErrorLog_Filtering 事件处理程序

转载 作者:行者123 更新时间:2023-12-02 18:12:08 25 4
gpt4 key购买 nike

我在 Elmah 中启用错误日志过滤,并希望在 ErrorLog_Filtering 事件处理程序中以编程方式执行此操作。它在 Visual Studio 开发服务器下运行良好,但一旦我进入 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>

以及我在 Global.asax 中的处理程序:

public void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e)
{
}

最佳答案

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

Handling module events in Global.asax通过命名约定进行工作,其中事件处理程序必须以配置中找到的模块名称命名,后跟下划线 (_),后跟事件名称。 ErrorLog_Filtering 很好,并且与 system.web/httpModules 下的注册名称相匹配,并且 Visual Studio Development Server 正在拾取该名称。 。您只需确保匹配所有名称,它就可以在两种环境中工作。

另请参阅:Programmatically log error and send email

关于asp.net - Elmah:在 IIS7 下未调用 ErrorLog_Filtering 事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3636032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com