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

捕获global.cs中的所有异常处理程序

  •  0
  • TheAlbear  · 技术社区  · 15 年前

    我想做的是捕获Web应用程序中未处理的任何异常,然后将用户发送到一个屏幕上,说

    “很抱歉,这辆车撞坏了”

    同时将例外情况发送到我们的票务系统。

    我假设我需要把它放到global.cs的某个不确定的地方?

    2 回复  |  直到 15 年前
        1
  •  3
  •   thelost    15 年前

    你需要 Application_Error Global.cs中的事件

    protected void Application_Error(object sender, EventArgs e)
    {
    
    }
    
        2
  •  3
  •   Steven    15 年前

    您可以在web.config中配置自定义错误页,如下所示:

    <configuration>
      <system.web>
        <customErrors defaultRedirect="GenericError.htm"
                      mode="RemoteOnly">
        </customErrors>
      </system.web>
    </configuration>
    

    记录这些异常也是明智的。有几个大众日志框架可以为您做到这一点。其中两个, ELMAH CuttingEdge.Logging ,具有用于ASP.NET的标准集成工具,它不允许编写任何单行代码。例如,使用cuttingedge.logging,您可以将站点配置为自动将错误记录到Windows事件日志中,如下所示:

    <?xml version="1.0"?>
    <configuration>
      <configSections>
        <section name="logging" 
            type="CuttingEdge.Logging.LoggingSection, CuttingEdge.Logging" />
      </configSections>
      <logging defaultProvider="WindowsEventLogger">
        <providers>
          <add name="WindowsEventLogger"
    type="CuttingEdge.Logging.WindowsEventLogLoggingProvider, CuttingEdge.Logging"
            source="MyWebApplication"
            logName="MyWebApplication" />
        </providers>
      </logging>
      <system.web>
        <httpModules>
          <add name="ExceptionLogger"
    type="CuttingEdge.Logging.Web.AspNetExceptionLoggingModule, CuttingEdge.Logging"/>
        </httpModules>
      </system.web>
    </configuration>
    


    更新:抱歉,阅读问题对我来说似乎很难。您希望将异常发送到您的票务系统。所有流行的日志系统都允许您扩展默认功能,通常非常容易,但是您当然需要为此进行编码。当然,您也可以覆盖 Application_Error 如菲利普所言。但是,这些日志框架可能有很多您可能需要考虑的功能。

    祝你好运。