Azure 应用服务上的远程调试 ASP.NET 核心 (Windows)

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

先决条件

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

  • 必须先从 Visual Studio 将 ASP.NET Core 应用部署到 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 热键。