ASP.NET 页面级 Trac调试、错误处理

⚡ 智能摘要

ASP.NET调试, tracVisual Studio 中的错误处理和错误处理功能可以帮助开发人员及早发现问题,并跟踪请求。 trace.axd,并在开发和生产生命周期中发生未处理的异常时将用户重定向到自定义错误页面。

  • 🐞 调试: Visual Studio 中的断点可以暂停执行,以便您可以逐行检查正在运行的 ASP.NET 页面。
  • 🔎 Tracing: 启用 tracweb.config 中添加 e trace.axd 列出了每个请求、其状态代码和时间。
  • 📄 页 Tracing: 添加 Trac将 Page 指令的 e=”true” 设置为单个页面的生命周期计时。
  • 🚧 自定义错误: customErrors 标签会在应用程序失败时将用户重定向到友好的错误页面。
  • 🧭 未处理的异常: Global.asax 中的 Application_Error 函数会捕获意外错误并重定向到安全页面。
  • 🗃️ 错误记录: 将 Server.GetLastError 的详细信息写入文件,可以记录问题以便后续调试。

ASP.NET 页面级 Trac调试、错误处理

任何应用程序在开发过程中难免会出现错误,因此,在早期阶段发现错误非常重要。

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

在 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 按钮。

什么是 Trac在 ASP.NET 中工作?

应用领域 trac博士开发的技术萃取的 允许用户查看请求的页面是否出现错误。当 trac启用后,会显示一个名为“额外页面”的页面 trace.axd 已添加到应用程序中(见下图)。此页面已附加到应用程序,将显示所有请求及其状态。

Trac在 ASP.NET 中

如何启用 Trac为 ASP.NET 应用程序开发

让我们来看看如何启用 trac寻找一个 ASP.NET 应用程序:

步骤1) 让我们来处理演示应用程序。从解决方案资源管理器打开 web.config 文件。

启用 trac为 ASP.NET 应用程序开发

步骤2) 将以下代码行添加到 web.config 文件中。 trace 语句用于启用 trac申请中。

  • requestLimit 在 trace 语句指定了必须进行的页面请求的数量。 trac编辑。
  • 在我们的示例中,我们将限制值设为 40。我们设置限制是因为更高的值会降低应用程序的性能。

启用 trac为 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 enabled="true" pageOutput="false" requestLimit="40" localOnly="false" />

    </system.web>
</configuration>

在 Visual Studio 中运行 DemoApplication。

输出:-

启用 trac为 ASP.NET 应用程序开发

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

  1. 网页请求的时间。
  2. 所请求的网页名称。
  3. Web 请求的状态码(状态码为 200 表示请求成功)。
  4. “查看详情”链接允许您查看有关 Web 请求的更多详细信息。其中一项重要信息是标头信息,它显示了每个 Web 请求标头中发送的信息。

启用 trac为 ASP.NET 应用程序开发

页面级别 Trac在 ASP.NET 中

页面级别 Trac博士开发的技术萃取的 在 ASP.NET 中,页面处理过程中会显示所有关于该网页的常规信息。如果页面由于任何原因无法正常工作,这些信息在调试时非常有用。Visual Studio 提供有关页面各个方面的详细信息,例如 Web 请求中每个方法的调用时间。

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

如何启用 Trac在 ASP.NET 中按页面级别进行操作

让我们来看看如何启用页面级功能。 trac适用于 ASP.NET 应用程序:

步骤1) 让我们开始处理演示应用程序。从解决方案资源管理器中打开 demo.aspx 文件。

页面级别 Trac在 ASP.NET 中

步骤2) 添加以下代码行以启用页面 trac在页面声明中,只需添加该属性即可。 Trace=”true”。这行代码将允许页面级 tracING。

页面级别 Trac在 ASP.NET 中

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="DemoApplication.Demo" Trace="true" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>

在 Visual Studio 中运行该应用程序。

输出:-

页面级别 Trac在 ASP.NET 中

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

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

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

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

步骤1) 让我们来完善我们的演示应用程序。让我们向应用程序中添加一个HTML页面。

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

ASP.NET 中的错误处理

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

  1. 请将页面名称设置为 ErrorPage。
  2. 单击“确定”按钮继续。

ASP.NET 中的错误处理

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

ASP.NET 中的错误处理

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

ASP.NET 中的错误处理

<!DOCTYPE html>
<html xmlns="http://www.w3.org/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 中的错误处理

以上页面显示应用程序触发了错误。因此,系统会向用户显示 ErrorPage.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 class Global : System.Web.HttpApplication
    {
        protected void Application_Error(object sender, EventArgs e)
        {
            HttpException lastErrorWrapper = Server.GetLastError() as HttpException;

            if (lastErrorWrapper.GetHttpCode() == 404)
                Server.Transfer("~/ErrorPage.html");
        }
    }
}

Code 解释:-

  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 中未处理的异常

以上页面显示应用程序触发了错误。因此,系统会向用户显示 ErrorPage.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 class Global : System.Web.HttpApplication
    {
        protected void Application_Error(object sender, EventArgs e)
        {
            Exception exc = Server.GetLastError();
            String str = "";
            str = exc.Message;

            String path = @"D:\AllErrors.txt";
            File.WriteAllText(path, str);
            Server.Transfer("~/ErrorPage.html");
        }
    }
}

Code 解释:-

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

输出:-

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

ASP.NET 错误日志记录

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

ASP.NET 错误日志记录

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

常见问题

是的。像 GitHub Copilot 这样的 AI 工具可以为 ASP.NET 代码建议断点、解释异常并提出修复方案。 Rev请查看每条建议并自行重现错误,因为人工智能可能会误读应用程序特定的状态。

是的。机器学习功能在诸如此类的工具中。 Azure Application Insights 可以自动标记异常激增或请求速度缓慢的情况。这有助于团队更快地发现生产问题,而无需手动扫描原始日志文件。

不。关闭自定义错误模式会暴露堆栈。 trac向所有访问者显示错误和敏感信息,这存在安全风险。在生产环境中使用 RemoteOnly 或 On 模式,这样只有本地开发人员才能看到完整的错误详情。

RemoteOnly 仅向本地服务器上的浏览器显示详细的错误页面,而远程用户将被重定向到默认重定向页面。这是一种安全的折衷方案,既可以调试在线网站,又不会泄露信息。

在 web.config 文件的 compilation 元素中设置 debug="false"。调试模式会禁用优化、延长超时时间并增加内存使用量,因此生产环境的网站应该始终将其关闭。 Visual Studio中.

不。开放 trace.axd 可能会将标头、会话和服务器变量暴露给攻击者。设置 localOnly=”true” 或禁用 trac因此,在部署之前完全完成 trac数据绝不会暴露给远程用户。

Server.Transfer 会将请求转发到服务器上的错误页面,而不会更改浏览器。 URL 或者进行往返跳转。Response.Redirect 会向浏览器发送一个新请求,更新路由信息。 URL 跳转到错误页面。

捕获异常消息和堆栈信息 trace,请求 URL时间戳和用户上下文。这些细节有助于开发人员稍后重现故障。Application_Error 中的 Server.GetLastError 会公开异常,以便您可以将其写入文件或数据库。

总结一下这篇文章: