我想要做的是捕获任何未在Web应用程序中处理的异常,然后将用户发送到屏幕上,例如
“抱歉这已经崩溃了”
同时将例外发送到我们的票务系统。
我假设我需要把它放在global.cs的某个地方,不知道在哪里?
答案 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日志框架可以为您执行此操作。其中两个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
。但是,这些日志记录框架可能具有许多您可能需要考虑的功能。祝你好运。