在 ASP.NET 移动网页中管理自适应性错误报告

更新:2007 年 11 月

在处理 ASP.NET 页的期间,错误被作为异常引发并通过 ASP.NET 错误处理机制进行处理。

本节概述 ASP.NET 中的错误报告功能,以及它与包含移动网页的 ASP.NET 应用程序是如何相关的。

ASP.NET 错误报告概述

在请求期间可能发生若干种类型的错误,其中包括:

  • 在 HTTP 内部中出现的错误,例如请求的文件已丢失。

  • 在将页、用户控件或类似文件编译为程序集时,在对它们进行分析的过程中出现的错误。

  • 在页的生存期期间,在 ASP.NET 内运行网页时出现的错误。

  • 在读取配置文件时出现的错误。

  • 系统错误,例如内存不足的情况。

ASP.NET 提供了若干自定义错误报告的功能。

错误报告模式

您可以对应用程序进行配置,显示包含与开发人员相关的信息的详细错误、用于普通用户的基本错误或自定义错误。您可以调整这些设置,以便只在客户端是本地计算机时显示详细错误。

应用程序级别错误

在请求期间出错时,ASP.NET 引发 Application_Error 事件。Global.asax 文件中的一个方法可以处理此事件,并重写错误处理行为。

页级别错误

在页的生存期期间发生的错误引发 Page_Error 事件。此事件的处理程序也许能够执行通知任务或尝试采取纠正措施,包括强制取消该错误,这取决于具体的错误。

自定义错误

在 Web.config 文件中,可以为 ASP.NET 应用程序内发生的异常指定一组自定义页。在发生错误后,ASP.NET 检查应用程序是否配置为显示自定义错误,并且检查是否存在适当的错误页。如果上述任何一种检查的结果为真,则 ASP.NET 重定向到该错误页,并且传递包含原始 URL 的参数。

移动 Web 应用程序中自适应性错误报告概述

移动网页中的错误报告的工作方式与其针对任何其他 ASP.NET 应用程序的工作方式相同。可使用相同的自定义技术。但是,错误报告在移动网页中的行为有一些不同点,因而在与设备一起使用时具有更好的自适应性。

特定于设备的格式

按照目标设备的标记自动设置错误信息的格式。对于 WML 设备,错误信息的格式是卡片组。对于 HTML 设备,错误信息的格式是 HTML 页。

说明:

如果编写自定义错误页,建议将它们编写为 ASP.NET 移动网页,以便为每一种设备类型正确设置自定义错误页的格式。

受限的默认错误信息内容

对于所有移动设备,内置的错误信息在本质上是简洁的,即使是在将应用程序被配置为显示详细信息的情况下。错误信息通常包含引发的异常的类型以及导致了该异常的方法。但是,在客户端是桌面浏览器时,呈现标准错误信息。

HTTP 响应代码

当 ASP.NET 报告异常时,它设置 HTTP 响应代码以反映错误的性质。浏览器可对响应代码起作用或显示在响应正文中包含的错误详细信息。但是,某些移动设备(尤其是基于 WML 的电话)只在有错误时才显示响应代码。在此类设备发生错误时,请求返回 HTTP 响应代码 200,指示成功,但页的正文包含错误信息。在 HTML 设备上,请求返回实际错误代码,以便浏览器能够相应地作出响应。

自适应性错误报告进程

对于移动网页,ASP.NET 使用下面的过程查找并报告错误:

  1. 如果发生应用程序级错误,ErrorHandlerModule 类型的 HTTP 模块就会处理该错误。(此模块是自动安装的。)

  2. 在页生命周期内,如果页级别发生异常,ASP.NET 将调用该页的 OnError 方法。因为该页是移动页,所以将调用 MobilePage 中的重写实现,而该重写实现又调用所分配的页适配器的 HandleError 方法。此适配器方法可以详细报告错误,并返回一个指示错误已得到处理的值。如果它不这样做,则继续处理异常。ASP.NET 自动使用自定义错误页。

  3. ASP.NET 从第 1 步调用错误处理程序。如果目标设备是能够呈现完整的 ASP.NET 生成的错误信息的 HTML 浏览器,则此方法结束。

  4. 否则,ASP.NET 收集有关异常的信息,创建 ErrorFormatterPage 类型的内部定义移动页的实例,将数据绑定到所收集的数据,并且呈现结果。此页负责生成特定于设备的错误信息。因为异常已被处理,所以该事件方法不返回 HTTP 错误状态代码。

请参见

其他资源

应用程序开发人员指南

开发 ASP.NET 移动网页