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

时间:2010-08-10 09:58:19

标签: c# asp.net exception-handling

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

“抱歉这已经崩溃了”

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

我假设我需要把它放在global.cs的某个地方,不知道在哪里?

2 个答案:

答案 0 :(得分:3)

您需要Global.cs中的Application_Error事件

protected void Application_Error(object sender, EventArgs e)
{

}

答案 1 :(得分:3)

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

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

记录这些例外也是明智之举。有几个populair日志框架可以为您执行此操作。其中两个ELMAHCuttingEdge.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。但是,这些日志记录框架可能具有许多您可能需要考虑的功能。

祝你好运。