【问题标题】:Catching CustomErrors in ASP.NET在 ASP.NET 中捕获 CustomErrors
【发布时间】:2010-09-29 10:48:04
【问题描述】:

我在 web.config 中有以下条目:

<customErrors mode="RemoteOnly" defaultRedirect="Error.aspx" />

Error.aspx.cs 中有没有办法获取错误详细信息,以便我可以保存到文件中?

【问题讨论】:

    标签: c# asp.net custom-errors


    【解决方案1】:

    您可以使用 Server.GetLastError() 来获取最后一个引发的异常对象:

    Exception exception = Server.GetLastError();
    

    或者,您可能希望查看在 Application_Error 方法中的 global.asax 文件中处理此问题,而不是您的自定义错误页面。
    Microsoft support article 中描述了几种不同的方法,用于自定义错误处理和报告

    【讨论】:

      【解决方案2】:

      您可以配置日志框架以将其保存到文件中。任何框架都可以,但让我在这里插入我自己的框架:-)

      使用CuttingEdge.Logging,您可以配置一个HttpModule(随库提供),它将自动将异常信息转发到日志系统。当您配置XmlFileLoggingProvider 时,您将能够写入文件。您的应用程序无需更改。这是一个示例配置:

      <?xml version="1.0"?>
      <configuration>
        <configSections>
          <section name="logging" 
              type="CuttingEdge.Logging.LoggingSection, CuttingEdge.Logging" />
        </configSections>
        <logging defaultProvider="XmlLogger">
          <providers>
            <add name="XmlLogger"
           type="CuttingEdge.Logging.XmlFileLoggingProvider, CuttingEdge.Logging"
              path="log.xml" 
            />
          </providers>
        </logging>
        <system.web>
          <httpModules>
            <add name="ExceptionLogger"
      type="CuttingEdge.Logging.Web.AspNetExceptionLoggingModule, CuttingEdge.Logging"/>
          </httpModules>
        </system.web>
      </configuration>
      

      您只需将 CuttingEdge.Logging.dll 添加到应用程序的 bin 文件夹并包含此配置即可。

      CuttingEdge.Logging AspNetExceptionLoggingModule 的好处在于,它不仅会记录请求期间引发的异常,还会记录来自后台线程并导致 AppDomain 回收的故障。后者是其他日志框架不支持开箱即用的功能。

      【讨论】:

        【解决方案3】:

        如果这就是您要查找的内容,我建议使用 ELMAH 进行错误记录。它提供了您的应用程序中发生的任何未处理错误的所有详细信息,并将其记录到数据库/文本文件中。它还有一个强大的报告工具,可以向您显示有关已记录错误的所有信息,包括黄屏死机。它还为您提供了在错误发生时向您邮寄错误的灵活性。最后,只需在 web.config 中添加一些配置即可运行它。

        但是,如果您也对显示用户友好的屏幕感兴趣,则需要在 global.aspx 的 application_error 中进行配置。

        【讨论】:

          猜你喜欢
          • 2013-12-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-02
          • 1970-01-01
          • 2013-07-12
          • 2012-01-09
          相关资源
          最近更新 更多