代码之家  ›  专栏  ›  技术社区  ›  Greg

在ASP.NET中捕获客户错误

  •  2
  • Greg  · 技术社区  · 14 年前

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

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

    error.aspx.cs中是否有方法获取错误详细信息以便保存到文件中?

    3 回复  |  直到 14 年前
        1
  •  3
  •   Andy Rose    14 年前

    可以使用server.getLastError()获取最后一个引发的异常对象:

    Exception exception = Server.GetLastError();
    

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

        2
  •  1
  •   Steven    14 年前

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

    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文件夹,包括这个配置,你很好去。

    切割边缘的好东西。伐木。 AspNetExceptionLoggingModule 它不仅会记录请求期间引发的异常,还会记录来自后台线程并导致AppDomain回收的失败。后者是其他日志框架不支持的现成特性。

        3
  •  1
  •   Whimsical    14 年前

    我建议使用Elmah进行错误日志记录,如果这是您要查找的。它提供应用程序中发生的任何未处理错误的所有详细信息,并将其记录到数据库/textfile中。它还有一个功能强大的报告工具,可以向您显示记录的所有错误,包括死亡的黄色屏幕。它还提供了在错误发生时向您发送错误的灵活性。最后,只需在web.config中添加一些配置即可运行它。

    但是,如果您还想显示一个用户友好的屏幕,您需要在global.aspx中的application_错误中进行配置。