【问题标题】:ELMAH setup - errors not being caughtELMAH 设置 - 未捕获错误
【发布时间】:2009-09-08 14:26:13
【问题描述】:

我已经完全按照示例应用程序设置了 ELMAH。我尝试使用以下方法抛出错误以测试 ELMAH:

throw new InvalidOperationException();

不幸的是,我的应用程序直接出现错误,ELMAH 没有捕获/记录错误。我正在使用 ASP.NET 3.5。我不确定我做错了什么,因为 Web.Config 与示例完全相同

【问题讨论】:

  • @DKong:我修改了我的帖子,如果这对你有帮助,请告诉我......
  • 您是否看到与您上面的代码相关的 InvalidOperationException YSOD?或者它是一个不同的例外?
  • 你能发布你的 web.config 吗? (显然删除任何私人信息)

标签: asp.net elmah


【解决方案1】:

仔细检查您的 Web.config。在我意识到我忘记注册模块之前,我遇到了同样的问题。

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

我在dotnetslackers 上发现这篇文章很有帮助。

【讨论】:

  • 我听懂了,但还是不开心。
  • Doh,我错过了这一行。这特别令人烦恼,因为它在开发中工作,但我在开发中使用 IIS 7,在生产中使用 IIS 6……我想知道为什么我在 IIS 中不需要它?不管怎样,谢谢,就是这样。
【解决方案2】:

由于 Elmah 是开源的,您应该将代码作为项目添加到您的解决方案中,并确保您在所有异常情况下都设置了 Visual Studio 中断。 Elmah 抛出一个会被吞下的异常听起来是可行的。这件事发生在我身上,它是插入错误的存储过程的权限。

原创
您的测试是否在 try/catch 块内?如果是这样,您必须明确强制进行日志记录。

Elmah.ErrorSignal.FromCurrentContext().Raise(ex);

我的 WEB.CONFIG 设置

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

  <elmah>
    <security allowRemoteAccess="0" />
    <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="TESTElmahConnectionString" />
    <errorFilter>
      <test>
        <equal binding="HttpStatusCode" value="404" type="Int32" />
      </test>
    </errorFilter>
  </elmah>


<httpModules>
  <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
  <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah"/>
  <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah"/>
  <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules>
      <remove name="ScriptModule"/>
      <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
    </modules>
    <handlers>
      <remove name="WebServiceHandlerFactory-Integrated"/>
      <remove name="ScriptHandlerFactory"/>
      <remove name="ScriptHandlerFactoryAppServices"/>
      <remove name="ScriptResource"/>
      <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </handlers>
  </system.webServer>

【讨论】:

  • 还没有 try catch 块。在我尝试发信号之前,我只是想让基本的默认处理工作正常
猜你喜欢
  • 2017-02-14
  • 2016-02-17
  • 2014-10-16
  • 2022-10-06
  • 2019-05-22
  • 2019-06-12
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
相关资源
最近更新 更多