Asp.Net 页面级跟踪、调试、错误处理 [示例]
任何应用程序在开发过程中难免会出现错误,因此,在早期阶段发现错误非常重要。
在 Visual Studio 中,可以对 ASP.Net 应用程序执行此操作。Visual Studio 用于调试,并具有针对 ASP.Net 的错误处理技术。
什么是 ASP.NET 中的调试?
调试是向应用程序添加断点的过程。这些断点用于暂停正在运行的程序的执行。这使开发人员能够了解程序在特定时间点发生的情况。
让我们以一个程序为例。该程序向用户显示一个字符串“我们正在调试”。假设当我们运行该应用程序时,由于某种原因,该字符串未显示。为了识别问题,我们需要添加一个断点。我们可以在显示字符串的代码行上添加一个断点。此断点将暂停程序的执行。此时,程序员可以看到可能出现的问题。程序员相应地纠正程序。
在此示例中,我们将使用在前面章节中创建的“DemoApplication”。在下面的示例中,我们将看到
- 如何使演示应用程序显示字符串。
- 如何向应用程序添加断点。
- 如何使用此断点调试应用程序。
如何在 ASP.NET 中调试应用程序
以下是在 ASP.Net 中制作演示应用程序、添加断点和调试的步骤:
步骤 1)在 Visual Studio 中打开应用程序
首先确保我们的 Web 应用程序已在 Visual Studio 中打开。确保 DemoApplication 已在 Visual Studio 中打开。
步骤2)现在打开Demo.aspx.cs文件并添加以下代码行。
- 我们只是添加代码行 Response.Write 来显示一个字符串。
- 因此,当应用程序执行时,它应该在 Web 浏览器中显示字符串“我们正在调试”。
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Write("We are debugging"); } } }
步骤3)向应用程序添加断点
断点是 Visual Studio 中您希望停止程序执行的点。
- 要添加断点,您需要单击要插入断点的列。因此,在我们的例子中,我们希望程序在代码行“Response.Write”处停止。您无需添加任何命令来添加断点。您只需单击要添加断点的行即可。
- 完成后,您会注意到代码被标记为红色。此外,代码行旁边的列中会出现一个红色气泡。
注意: - 您可以在应用程序中添加多个断点
步骤 4)在调试模式下运行应用程序
现在您需要使用调试模式运行您的应用程序。在 Visual Studio 中,选择菜单选项“调试”->“开始调试”。
输出:-
当您正确执行所有步骤时,程序的执行将会中断。Visual Studio 将转到断点并用黄色标记代码行。
现在,如果程序员觉得代码不正确,可以停止执行。然后可以相应地修改代码。要继续执行程序,程序员需要单击键盘上的 F5 按钮。
ASP.NET 中的跟踪是什么?
应用程序跟踪允许查看请求的任何页面是否导致错误。启用跟踪后,应用程序将添加一个名为 trace.axd 的额外页面。(见下图)。此页面附加到应用程序。此页面将显示所有请求及其状态。
如何在 ASP.NET 中启用应用程序跟踪
让我们看看如何启用跟踪 ASP.Net 应用程序:
步骤1) 让我们开始开发“DemoApplication”。从解决方案资源管理器中打开 web.config 文件。
步骤2) 将以下代码行添加到 Web.config 文件。
trace 语句用于启用应用程序的跟踪。
- trace 语句中使用了 'requestLimit'。它指定必须跟踪的页面请求数。
- 在我们的示例中,我们给出的限制为 40。我们给出限制是因为更高的值会降低应用程序的性能。
<?xml version="1.0" encoding="utf-8"?> <! -- For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> <httpRuntime targetFramework="4.0” /> <trace enable="true" pageOutput="false" requestLimit="40" localOnly="false"/> </system.web> </configuration>
在 Visual Studio 中运行“demoapplication”。
输出:-
如果您现在浏览到该 URL – http://localhost:53003/trace.axd ,您将看到每个请求的信息。在这里您可以查看应用程序中是否发生任何错误。以上页面显示了以下类型的信息
- 网页请求的时间。
- 正在请求的网页的名称。
- Web 请求的状态代码。(状态代码 200 表示请求成功)。
- 查看详细信息,您可以查看有关 Web 请求的更多详细信息。下面显示了一个示例。提供的一项重要详细信息是标头信息。此信息显示每个 Web 请求的标头中发送的信息是什么。
ASP.NET 中的页面级别跟踪
页面级跟踪 ASP.Net 中的显示处理网页时有关网页的所有常规信息。如果页面因任何原因无法正常工作,这在调试时很有用。Visual Studio 提供有关页面各个方面的详细信息以及 Web 请求中调用的每个方法的时间等信息。
例如,如果您的 Web 应用程序存在性能问题,此信息可帮助您调试问题。当应用程序在 Visual Studio 中运行时,会显示此信息。
如何在 ASP.NET 中启用页面级跟踪
让我们看看如何为 ASP.Net 应用程序启用页面级跟踪:
步骤1) 让我们开始开发我们的 DemoApplication。从解决方案资源管理器中打开 demo.aspx 文件
步骤2) 添加以下代码行以启用页面跟踪。在 Page 声明中,只需添加行 Trace=”true”。此代码行将允许页面级跟踪。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="DemoApplication.Demo" %> <!DOCTYPE html> <html xmlns="http://www.w3.ore/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server”> </form> </body> </html>
在 Visual Studio 中运行该应用程序。
输出:-
现在,当显示网页 Demo.aspx 时,您将获得有关该页面的大量信息。此页面上显示了页面生命周期各个环节的时间等信息。
错误处理:显示自定义错误页面
In 网络,您可以向用户显示自定义错误页面。如果应用程序包含任何类型的错误,自定义页面将向用户显示此错误。
在我们的示例中,我们首先要添加一个 HTML 页面。此页面将向用户显示一个字符串“我们正在调查此问题”。然后,我们将向 demo.aspx 页面添加一些错误代码,以便显示错误页面。
让我们按照下面提到的步骤
步骤1) 让我们开始开发我们的 DemoApplication。让我们向应用程序添加一个 HTML 页面
- 在解决方案资源管理器中右键单击 DemoApplication
- 选择菜单选项‘添加’->HTML 页面
步骤2) 下一步,我们需要为新的 HTML 页面提供一个名称。
- 将名称提供为“ErrorPage”。
- 单击“确定”按钮继续。
步骤3) Errorpage 会自动在 Visual Studio 中打开。如果您转到解决方案资源管理器,您将看到已添加的文件。
在 HTML 页面中添加代码行“我们正在调查此问题”。在对 web.config 文件进行更改之前,无需关闭 HTML 文件。
<!DOCTYPE html> <html xmlns="http://www.w3.ore/1999/xhtml"> <head runat="server"> <title></title> </head> <body> We are looking into the problem </body> </html>
步骤4) 现在您需要在 web.config 文件中做出更改。此更改将通知每当应用程序发生错误时,都需要显示自定义错误页面。
'customErrors' 标签允许定义自定义错误页面。defaultRedirect 属性设置为我们在上一步中创建的自定义错误页面的名称。
<configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> <httpRuntime targetFramework="4.0” /> <customErrors mode="On" defaultRedirect="ErrorPage.html"> </customErrors> </system.web> </configuration>
步骤5) 现在让我们向 demo.aspx.cs 页面添加一些错误代码。在解决方案资源管理器中双击文件打开此页面
将以下代码添加到 Demo.aspx.cs 文件。
- 这些代码行用于从文件中读取文本行。
- 该文件应该位于 D 盘,名称为“Example.txt”。
- 但在我们的例子中,这个文件实际上并不存在。因此,此代码将在应用程序运行时导致错误。
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { String path = @"D:\Example.txt"; string[] lines; lines = File.ReadAllLines(path); } } }
现在执行代码 Visual Studio中 你应该得到下面的输出。
输出:-
上述页面显示应用程序中触发了一个错误。因此,向用户显示 Error.html 页面。
ASP.NET 未处理的异常
即使在最好的情况下,也可能会出现无法预见的错误情况。
假设用户浏览到应用程序中的错误页面。这是无法预测的。在这种情况下,ASP.Net 可以将用户重定向到 errorpage.html。
让我们看一个例子。
- 我们将使用具有 Errorpage.html 的相同“DemoApplication”。
- 我们将尝试查看我们的应用程序中不存在的网页。
- 在这种情况下,我们应该重定向到 ErrorPage.html 页面。让我们看看实现此目的的步骤。
步骤1) 让我们开始开发我们的 DemoApplication。从解决方案资源管理器中打开 Global.asax.cs 文件
注意:global.asax.cs 文件用于添加适用于应用程序所有页面的代码。
步骤2) 将以下代码行添加到 global.asax.cs。这些行将用于检查错误并相应地显示 ErrorPage.html 页面。
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Application_Error(object sender, EventArgs e) { ? HttpException lastErrorWrapper = Server.GetLastError() as HttpException; if(lastErrorWrapper.GetHttpCode() == 404) Server.T ransfer("~/ErrorPage.html"); } } }
代码说明:-
- 第一行是 Application_Error 事件处理程序。每当应用程序发生错误时,都会调用此事件。请注意,事件名称必须是“Application_Error”。参数应如上所示。
- 接下来,我们定义一个 HttpException 类类型的对象。这是一个标准对象,它将保存错误的所有详细信息。然后我们使用 Server.GetLastError 方法获取应用程序中发生的最后一个错误的所有详细信息。
- 然后我们检查最后一个错误的错误代码是否为 404。(错误代码 404 是用户浏览未找到的页面时返回的标准代码)。如果错误代码匹配,我们将用户转到 ErrorPage.html 页面。
现在在 Visual Studio 中运行代码,你应该得到以下输出
输出:-
浏览页面 http://localhost:53003/Demo1.aspx 。请记住,我们的应用程序中不存在 Demo1.aspx。然后您将获得以下输出。
上述页面显示应用程序中触发了一个错误。因此,向用户显示 Error.html 页面。
ASP.NET 错误日志记录
通过记录应用程序错误,它可以帮助开发人员在以后的时间点调试和解决错误。 ASP.Net 具有记录错误的功能。当捕获错误时,此操作在 Global.asax.cs 文件中完成。在捕获过程中,错误消息可以写入日志文件。
让我们看一个例子。
- 我们将使用具有 Errorpage.html 的相同 DemoApplication。
- 我们将尝试查看我们的应用程序中不存在的网页。
- 在这种情况下,我们应该被重定向到我们的 ErrorPage.html 页面。
- 同时,我们会将错误信息写入日志文件。让我们看看实现这一目标的步骤。
步骤1) 让我们开始开发我们的 DemoApplication。从解决方案资源管理器中打开 Global.asax.cs 文件
步骤2) 将以下代码行添加到 global.asax.cs。它将检查错误并相应地显示 ErrorPage.html 页面。同时,我们将在名为“AllErrors.txt”的文件中记录错误详细信息。对于我们的示例,我们将编写代码以在 D 盘上创建此文件。
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Application_Error(object sender, EventArgs e) { Exception exc = Server.GetLastError(); String str =""; str = exc.Message; String path = @"D:\AllErrors.txt"; File.WriteAllTest(path,str); Server.trrasfer("~/ErrorPage.html"); } } }
代码说明:-
- 第一行是使用 'Server.GetLastError' 方法获取错误本身。然后将其分配给变量 'exc'。
- 然后我们创建一个名为“str”的空字符串变量。我们使用“exc.Message”属性获取实际的错误消息。exc.Message 属性将具有运行应用程序时发生的任何错误的确切消息。然后将其分配给字符串变量。
- 接下来,我们定义名为“AllErrrors.txt”的文件。所有错误消息都将发送到此文件。我们将包含所有错误消息的字符串“str”写入此文件。
- 最后,我们将用户转移到ErrorPage.html文件。
输出:-
浏览页面 http://localhost:53003/Demo1.aspx 。请记住,我们的应用程序中不存在 Demo1.aspx。然后您将获得以下输出。
同时,如果您打开“AllErrors.txt”文件,您将看到以下信息。
然后,错误消息可以在稍后的时间传递给开发人员,以便进行调试。
总结
- ASP.Net 具有执行调试和错误处理的功能。
- 通过在代码中添加断点即可实现调试。然后运行 Visual Studio 中的“开始调试”选项来调试代码。
- 跟踪是在应用程序运行时提供更多信息的功能。这可以在应用程序或页面级别完成。
- 在页面级别,需要在页面指令中添加代码Trace=true。
- 在应用程序级别,会为应用程序创建一个名为 Trace.axd 的额外页面。它提供了所有必要的跟踪信息。