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 中打开。

在 ASP.NET 中调试应用程序

步骤2)现在打开Demo.aspx.cs文件并添加以下代码行。

  • 我们只是添加代码行 Response.Write 来显示一个字符串。
  • 因此,当应用程序执行时,它应该在 Web 浏览器中显示字符串“我们正在调试”。

在 ASP.NET 中调试应用程序

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 中您希望停止程序执行的点。

在 ASP.NET 中调试应用程序

  1. 要添加断点,您需要单击要插入断点的列。因此,在我们的例子中,我们希望程序在代码行“Response.Write”处停止。您无需添加任何命令来添加断点。您只需单击要添加断点的行即可。
  2. 完成后,您会注意到代码被标记为红色。此外,代码行旁边的列中会出现一个红色气泡。

注意: - 您可以在应用程序中添加多个断点

步骤 4)在调试模式下运行应用程序
现在您需要使用调试模式运行您的应用程序。在 Visual Studio 中,选择菜单选项“调试”->“开始调试”。

在 ASP.NET 中调试应用程序

输出:-

在 ASP.NET 中调试应用程序

当您正确执行所有步骤时,程序的执行将会中断。Visual Studio 将转到断点并用黄色标记代码行。

现在,如果程序员觉得代码不正确,可以停止执行。然后可以相应地修改代码。要继续执行程序,程序员需要单击键盘上的 F5 按钮。

ASP.NET 中的跟踪是什么?

应用程序跟踪允许查看请求的任何页面是否导致错误。启用跟踪后,应用程序将添加一个名为 trace.axd 的额外页面。(见下图)。此页面附加到应用程序。此页面将显示所有请求及其状态。

ASP.NET 中的跟踪

如何在 ASP.NET 中启用应用程序跟踪

让我们看看如何启用跟踪 ASP.Net 应用程序:

步骤1) 让我们开始开发“DemoApplication”。从解决方案资源管理器中打开 web.config 文件。

在 ASP.NET 中启用应用程序跟踪

步骤2) 将以下代码行添加到 Web.config 文件。

trace 语句用于启用应用程序的跟踪。

  • trace 语句中使用了 'requestLimit'。它指定必须跟踪的页面请求数。
  • 在我们的示例中,我们给出的限制为 40。我们给出限制是因为更高的值会降低应用程序的性能。

在 ASP.NET 中启用应用程序跟踪

<?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”。

输出:-

在 ASP.NET 中启用应用程序跟踪

如果您现在浏览到该 URL – http://localhost:53003/trace.axd ,您将看到每个请求的信息。在这里您可以查看应用程序中是否发生任何错误。以上页面显示了以下类型的信息

  1. 网页请求的时间。
  2. 正在请求的网页的名称。
  3. Web 请求的状态代码。(状态代码 200 表示请求成功)。
  4. 查看详细信息,您可以查看有关 Web 请求的更多详细信息。下面显示了一个示例。提供的一项重要详细信息是标头信息。此信息显示每个 Web 请求的标头中发送的信息是什么。

在 ASP.NET 中启用应用程序跟踪

ASP.NET 中的页面级别跟踪

页面级跟踪 ASP.Net 中的显示处理网页时有关网页的所有常规信息。如果页面因任何原因无法正常工作,这在调试时很有用。Visual Studio 提供有关页面各个方面的详细信息以及 Web 请求中调用的每个方法的时间等信息。

例如,如果您的 Web 应用程序存在性能问题,此信息可帮助您调试问题。当应用程序在 Visual Studio 中运行时,会显示此信息。

如何在 ASP.NET 中启用页面级跟踪

让我们看看如何为 ASP.Net 应用程序启用页面级跟踪:

步骤1) 让我们开始开发我们的 DemoApplication。从解决方案资源管理器中打开 demo.aspx 文件

ASP.NET 中的页面级别跟踪

步骤2) 添加以下代码行以启用页面跟踪。在 Page 声明中,只需添加行 Trace=”true”。此代码行将允许页面级跟踪。

ASP.NET 中的页面级别跟踪

<%@ 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 中运行该应用程序。

输出:-

ASP.NET 中的页面级别跟踪

现在,当显示网页 Demo.aspx 时,您将获得有关该页面的大量信息。此页面上显示了页面生命周期各个环节的时间等信息。

错误处理:显示自定义错误页面

In 网络,您可以向用户显示自定义错误页面。如果应用程序包含任何类型的错误,自定义页面将向用户显示此错误。

在我们的示例中,我们首先要添加一个 HTML 页面。此页面将向用户显示一个字符串“我们正在调查此问题”。然后,我们将向 demo.aspx 页面添加一些错误代码,以便显示错误页面。

让我们按照下面提到的步骤

步骤1) 让我们开始开发我们的 DemoApplication。让我们向应用程序添加一个 HTML 页面

  1. 在解决方案资源管理器中右键单击 DemoApplication
  2. 选择菜单选项‘添加’->HTML 页面

ASP.Net 中的错误处理

步骤2) 下一步,我们需要为新的 HTML 页面提供一个名称。

  1. 将名称提供为“ErrorPage”。
  2. 单击“确定”按钮继续。

ASP.Net 中的错误处理

步骤3) Errorpage 会自动在 Visual Studio 中打开。如果您转到解决方案资源管理器,您将看到已添加的文件。

ASP.Net 中的错误处理

在 HTML 页面中添加代码行“我们正在调查此问题”。在对 web.config 文件进行更改之前,无需关闭 HTML 文件。

ASP.Net 中的错误处理

<!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 属性设置为我们在上一步中创建的自定义错误页面的名称。

ASP.Net 中的错误处理

<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 页面添加一些错误代码。在解决方案资源管理器中双击文件打开此页面

ASP.Net 中的错误处理

将以下代码添加到 Demo.aspx.cs 文件。

  • 这些代码行用于从文件中读取文本行。
  • 该文件应该位于 D 盘,名称为“Example.txt”。
  • 但在我们的例子中,这个文件实际上并不存在。因此,此代码将在应用程序运行时导致错误。

ASP.Net 中的错误处理

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中 你应该得到下面的输出。

输出:-

ASP.Net 中的错误处理

上述页面显示应用程序中触发了一个错误。因此,向用户显示 Error.html 页面。

ASP.NET 未处理的异常

即使在最好的情况下,也可能会出现无法预见的错误情况。

假设用户浏览到应用程序中的错误页面。这是无法预测的。在这种情况下,ASP.Net 可以将用户重定向到 errorpage.html。

让我们看一个例子。

  • 我们将使用具有 Errorpage.html 的相同“DemoApplication”。
  • 我们将尝试查看我们的应用程序中不存在的网页。
  • 在这种情况下,我们应该重定向到 ErrorPage.html 页面。让我们看看实现此目的的步骤。

步骤1) 让我们开始开发我们的 DemoApplication。从解决方案资源管理器中打开 Global.asax.cs 文件

ASP.NET 未处理的异常

注意:global.asax.cs 文件用于添加适用于应用程序所有页面的代码。

步骤2) 将以下代码行添加到 global.asax.cs。这些行将用于检查错误并相应地显示 ErrorPage.html 页面。

ASP.NET 未处理的异常

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");
		  }
		}
}

代码说明:-

  1. 第一行是 Application_Error 事件处理程序。每当应用程序发生错误时,都会调用此事件。请注意,事件名称必须是“Application_Error”。参数应如上所示。
  2. 接下来,我们定义一个 HttpException 类类型的对象。这是一个标准对象,它将保存错误的所有详细信息。然后我们使用 Server.GetLastError 方法获取应用程序中发生的最后一个错误的所有详细信息。
  3. 然后我们检查最后一个错误的错误代码是否为 404。(错误代码 404 是用户浏览未找到的页面时返回的标准代码)。如果错误代码匹配,我们将用户转到 ErrorPage.html 页面。

现在在 Visual Studio 中运行代码,你应该得到以下输出

输出:-

浏览页面 http://localhost:53003/Demo1.aspx 。请记住,我们的应用程序中不存在 Demo1.aspx。然后您将获得以下输出。

ASP.NET 中未处理的异常

上述页面显示应用程序中触发了一个错误。因此,向用户显示 Error.html 页面。

ASP.NET 错误日志记录

通过记录应用程序错误,它可以帮助开发人员在以后的时间点调试和解决错误。 ASP.Net 具有记录错误的功能。当捕获错误时,此操作在 Global.asax.cs 文件中完成。在捕获过程中,错误消息可以写入日志文件。

让我们看一个例子。

  • 我们将使用具有 Errorpage.html 的相同 DemoApplication。
  • 我们将尝试查看我们的应用程序中不存在的网页。
  • 在这种情况下,我们应该被重定向到我们的 ErrorPage.html 页面。
  • 同时,我们会将错误信息写入日志文件。让我们看看实现这一目标的步骤。

步骤1) 让我们开始开发我们的 DemoApplication。从解决方案资源管理器中打开 Global.asax.cs 文件

ASP.NET 错误日志记录

步骤2) 将以下代码行添加到 global.asax.cs。它将检查错误并相应地显示 ErrorPage.html 页面。同时,我们将在名为“AllErrors.txt”的文件中记录错误详细信息。对于我们的示例,我们将编写代码以在 D 盘上创建此文件。

ASP.NET 错误日志记录

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");
		  }
		}
}

代码说明:-

  1. 第一行是使用 'Server.GetLastError' 方法获取错误本身。然后将其分配给变量 'exc'。
  2. 然后我们创建一个名为“str”的空字符串变量。我们使用“exc.Message”属性获取实际的错误消息。exc.Message 属性将具有运行应用程序时发生的任何错误的确切消息。然后将其分配给字符串变量。
  3. 接下来,我们定义名为“AllErrrors.txt”的文件。所有错误消息都将发送到此文件。我们将包含所有错误消息的字符串“str”写入此文件。
  4. 最后,我们将用户转移到ErrorPage.html文件。

输出:-

浏览页面 http://localhost:53003/Demo1.aspx 。请记住,我们的应用程序中不存在 Demo1.aspx。然后您将获得以下输出。

ASP.NET 错误日志记录

同时,如果您打开“AllErrors.txt”文件,您将看到以下信息。

ASP.NET 错误日志记录

然后,错误消息可以在稍后的时间传递给开发人员,以便进行调试。

总结

  • ASP.Net 具有执行调试和错误处理的功能。
  • 通过在代码中添加断点即可实现调试。然后运行 ​​Visual Studio 中的“开始调试”选项来调试代码。
  • 跟踪是在应用程序运行时提供更多信息的功能。这可以在应用程序或页面级别完成。
  • 在页面级别,需要在页面指令中添加代码Trace=true。
  • 在应用程序级别,会为应用程序创建一个名为 Trace.axd 的额外页面。它提供了所有必要的跟踪信息。