在 Azure 应用服务上远程调试 ASP.NET Core (Windows)

本文介绍如何将 Visual Studio 调试器附加到在 Azure 应用服务上运行的 ASP.NET Core 应用。 可以通过执行以下步骤,像在本地运行一样调试应用。

先决条件

  • 安装了 ASP.NET 和 Web 开发以及 Azure 开发工作负载的 Visual Studio 2022。

  • 必须先将 ASP.NET Core 应用从 Visual Studio 部署到 Azure 应用服务 (Windows),并且该应用必须正在运行。

    有关包括应用服务部署的动手培训,请参阅在 Azure 上远程调试 ASP.NET Core

  • 在发布之前,Visual Studio 中的发布配置文件必须设置为“调试”而不是“发布”。

启用远程调试

在使用 Visual Studio 调试此问题之前,必须在应用服务上启用远程调试功能。 此设置允许 Visual Studio 调试程序连接到主应用服务 Web 托管进程。

  1. 登录到自己的 Azure 门户

    在 Azure 门户中找到已部署的应用程序。 可以通过浏览到应用服务页,然后选择应用服务实例来查找应用。 还可以在顶部的搜索栏中直接按名称搜索应用服务实例。 (在此示例中,应用服务实例名为 GitHubBrowser123。)

    Azure 搜索的屏幕截图。

  2. 在应用服务实例的设置页上,选择左侧导航上的“配置”,然后选择“常规设置”选项卡。

  3. 在页面底部,确保将远程调试功能设置为打开,并选择 Visual Studio 2022 作为远程 Visual Studio 版本

    Azure 远程调试设置的屏幕截图。

  4. 选择页面顶部的保存以保存更改。

应用服务实例现在支持通过 Visual Studio 进行远程调试。

配置调试设置

  1. 生成应用而未出现错误。 如果您的应用正在本地运行,请停止它。

    注意

    确保本地代码的状态与部署到 Azure 的内容相匹配。 这可确保本地符号文件和源代码与部署的应用一致。

  2. 从顶部的“Visual Studio”菜单中,选择“调试”>“选项”。 确保“启用‘仅我的代码’”处于未选中状态(如下所示),然后选择“确定”。

    通过更改此设置,Visual Studio 可以调试使用本地 bin 文件夹中的必要符号文件部署到 Azure 的优化代码。 调试器使用符号文件作为 Visual Studio 中的已编译代码、执行代码和源代码之间的桥梁。 远程调试需要匹配符号文件。

    Visual Studio 调试设置的屏幕截图。

将调试程序附加到应用服务

  1. 从 Visual Studio 顶部的主菜单中,选择调试 >附加到进程以打开相应的对话框。 使用此窗口可以连接并附加到不同的目标。 在这种情况下,你将连接到在上一步中创建的应用服务实例。

  2. 选择连接类型下拉列表,然后选择 Microsoft Azure 应用服务选项。

  3. 选择连接目标字段旁边的查找..,打开对话框,通过该对话框浏览 Azure 订阅和应用服务。

    如果尚未使用 Azure 订阅登录,请选择查找...,然后即可登录

  4. 找到并选择在上一步中创建的应用服务实例,然后选择确定

  5. w3wp.exe 进程应显示在要连接到的可用进程的列表中。 w3wp.exe 是托管已部署应用程序的 Azure 应用服务的主要进程。 选择 w3wp.exe 进程,然后选择右下角的附加

    “附加到进程”功能的屏幕截图。

  6. 在 C# 应用程序文件(例如 Index.cshtml.cs)中,通过单击左边距来设置断点。 或者,右键单击并选择断点>插入断点

  7. 在 Web 应用中,使用断点导航到终结点。 如果你已连接到进程,但无法命中断点,请确保 Visual Studio 中的发布配置文件设置为调试配置,而不是发布配置。

  8. 可选:验证 Visual Studio 是否已为调试会话加载了符号文件。 导航到调试 > Windows >模块以打开模块窗口。 此窗口指示,在之前所做的仅我的代码配置更改后,成功加载了符号文件。

    符号文件窗口的屏幕截图。

注意

对于应用服务的后续调试,请选择调试>重新附加到 w3wp.exe或使用 Shift+Alt+P 热键。