【发布时间】:2016-01-20 16:06:48
【问题描述】:
我正在尝试从我正在维护的站点中记录所有“一般错误”,以调试代码隐藏,而不必向用户显示详细的错误页面。 web.config 说:
<customErrors mode="RemoteOnly" defaultRedirect="~/GeneralError.html"/>
它适用于除以零、空引用异常、缺少 dll 等问题。经过大量阅读后,我发现这些是“未处理的异常”,但未到达 @987654324 中的处理程序 Application_Error() @。在每页的基础上,什么是有效的:
protected override void OnError(EventArgs e)
{
Exception TheException = Server.GetLastError();
// todo: log the exception to the database
base.OnError(e); //pass the exception to the regular handler
return;
}
但这是否可以更改为使用单一方法记录所有页面的未处理异常?如何覆盖或修改基类Page?
我也想过把日志放在GeneralError.aspx的代码隐藏中,但是这样就没有堆栈跟踪或异常消息,而且任何用户都可以直接调用这个页面来烦我们。
我使用一些帖子中提到的IErrorHandler 接口进行了调查,但这应该与 WinForm 应用程序有关,而不是与 asp.net 网络应用程序有关。
【问题讨论】: