Asp.Net 页面级跟踪、调试、错误处理 [示例]

在任何应用程序中,在开发过程中都会发生错误。在早期发现错误非常重要。

在 Visual Studio 中,ASP.Net 应用程序可以做到这一点。Visual Studio 用于调试,并为 ASP.Net 提供了错误处理技术。

什么是 ASP.NET 中的调试?

调试是向应用程序添加断点的过程。这些断点用于暂停正在运行的程序的执行。这使得开发人员能够了解程序在特定时间点的运行情况。

让我们以程序为例。该程序向用户显示字符串“We are debugging”。假设当我们运行应用程序时,由于某种原因,字符串未显示。为了识别问题,我们需要添加一个断点。我们可以将断点添加到显示字符串的代码行。此断点将暂停程序的执行。此时,程序员可以看到可能出错的地方。程序员会相应地纠正程序。

在这里的示例中,我们将使用我们之前章节创建的“DemoApplication”。在以下示例中,我们将看到:

  • 如何使演示应用程序显示字符串。
  • 如何向应用程序添加断点。
  • 如何使用此断点调试应用程序。

如何在 ASP.NET 中调试应用程序

以下是关于如何在 ASP.Net 中创建演示应用程序、添加断点和调试的步骤。

步骤 1)在 Visual Studio 中打开应用程序
首先,让我们确保我们的 Web 应用程序已在 Visual Studio 中打开。确保 DemoApplication 在 Visual Studio 中已打开。

 Debug an application in ASP.NET

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

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

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

 Debug an application in ASP.NET

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

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

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

 Debug an application in ASP.NET

输出:-

 Debug an application in ASP.NET

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

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

什么是 ASP.NET 中的跟踪?

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

Tracing in ASP.NET

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

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

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

 Enable tracing for an application in ASP.NET

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

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

  • trace 语句中的 ‘requestLimit’ 被使用。它指定了需要跟踪的页面请求数量。
  • 在我们的例子中,我们将限制设置为 40。我们设置限制是因为较高的值会降低应用程序的性能。

Enable tracing for an application in 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”。

输出:-

 Enable tracing for an application in ASP.NET

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

  1. 请求 Web 页面的时间。
  2. 被请求的 Web 页面的名称。
  3. Web 请求的状态代码。(状态代码 200 表示请求成功)。
  4. “查看详细信息”允许您查看有关 Web 请求的更多详细信息。下面显示了一个此类示例。提供的一个重要详细信息是标头信息。此信息显示了每个 Web 请求的标头中发送的信息。

Enable tracing for an application in ASP.NET

ASP.NET 中的页面级别跟踪

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

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

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

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

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

Page Level Tracing in ASP.NET

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

Page Level Tracing in 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 中运行应用程序。

输出:-

Page Level Tracing in ASP.NET

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

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

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

在我们的示例中,我们将首先添加一个 HTML 页面。该页面将向用户显示字符串“We are looking into the problem”。然后,我们将向 demo.aspx 页面添加一些错误代码,以便显示错误页面。

让我们按照以下步骤进行操作。

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

  1. 在解决方案资源管理器中右键单击 DemoApplication。
  2. 选择菜单选项“Add”->“HTML Page”。

Error Handling in ASP.Net

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

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

Error Handling in ASP.Net

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

Error Handling in ASP.Net

向 HTML 页面添加代码行“We are looking into the problem”。在更改 web.config 文件之前,您无需关闭 HTML 文件。

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

Error Handling in 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 页面添加一些错误的 C# 代码。通过双击解决方案资源管理器中的文件来打开此页面

Error Handling in ASP.Net

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

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

Error Handling in 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 中的代码,您应该会看到以下输出。

输出:-

Error Handling in ASP.Net

上面的页面显示应用程序中触发了错误。结果,向用户显示了 Error.html 页面。

ASP.NET 未处理的异常

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

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

让我们看一个例子。

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

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

ASP.NET Unhandled Exception

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

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

ASP.NET Unhandled Exception

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 中运行代码,您应该会看到以下输出。

输出:-

浏览页面 https://:53003/Demo1.aspx 。请记住 Demo1.aspx 在我们的应用程序中不存在。您将看到以下输出。

Unhandled Exception in ASP.NET

上面的页面显示应用程序中触发了错误。结果,向用户显示了 Error.html 页面。

ASP.NET 错误日志记录

通过记录应用程序错误,有助于开发人员在以后进行调试和解决错误。ASP.Net 具有记录错误的功能。这在捕获错误时在 Global.asax.cs 文件中完成。在捕获过程中,可以将错误消息写入日志文件。

让我们看一个例子。

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

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

ASP.NET Error logging

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

ASP.NET Error logging

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 文件。

输出:-

浏览页面 https://:53003/Demo1.aspx 。请记住 Demo1.aspx 在我们的应用程序中不存在。您将看到以下输出。

ASP.NET Error logging

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

ASP.NET Error logging

然后可以将错误消息传递给开发人员,以便以后进行调试。

摘要

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