如何:处理应用程序级别的错误

更新:2007 年 11 月

此代码示例演示如何在 Global.asax 文件中创建错误处理程序,以在处理请求期间捕捉所有未处理的 ASP.NET 错误,即 Try/Catch 块或在页级别的错误处理程序中没有捕捉的所有错误。在此示例中,处理程序将控件传输到一个名为 GenericErrorPage.aspx 的一般性错误页中,该页解释错误并显示适当的消息。

示例

下面的示例摘自错误处理程序的完整示例中的一个完整代码示例。

若要在 Global.asax 文件中启用错误事件处理程序,Web.config 文件不能为 defaultRedirect 指定文件。配置文件优先。因此,可以将 customErrors 设置为 Off 或移除 defaultRedirect 设置。如果 Web.config 配置文件将 customErrors 设置为 Off,则 Global.asax 中的 Application_Error 事件处理程序将处理所有未处理的错误。

24395wz3.alert_security(zh-cn,VS.90).gif安全说明:

如果 Global.asax 文件中没有 Application_Error 处理程序,则不要在 Web.config 文件中将 customErrors 设置为 Off。任何人都可以访问对网站安全存在潜在威胁的信息,包括可能会导致站点发生错误的人员。

可靠编程

最好使用 Try/Catch 块包围具有错误的任何代码,而不是依赖于全局错误处理程序。

在 Global.asax 文件中定义的错误处理程序将只捕捉在处理请求期间 ASP.NET 运行库所发生的错误。例如,如果用户请求应用程序中不发生的某个 .aspx 文件时,则错误处理程序将捕捉该错误。但是,如果用户请求不存在的 .htm 文件,则错误处理程序不捕捉该错误。对于非 ASP.NET 错误,可以在 Internet 信息服务 (IIS) 中创建自定义处理程序。此外,对于服务器级别的错误,也不调用自定义处理程序。

不能直接从 Global.asax 文件输出请求的错误信息;必须将控件传输到其他页(通常是 Web 窗体页)。在将控件传输到其他页时,使用 Transfer 方法。这样可保留当前的上下文,以便您可以从 GetLastError 方法获取错误信息。

在处理一个错误后,必须通过调用 Server 对象(HttpServerUtility 类)的 ClearError 方法将该错误清除。

安全性

务必不要显示可能帮助恶意用户危害您的应用程序的错误信息。有关详细信息,请参见如何:显示安全错误信息

请参见

任务

如何:处理页级别错误

概念

错误处理程序的完整示例