在 Visual Studio 中对远程 IIS 计算机上的 ASP.NET Core 进行远程调试

若要调试已部署到 IIS 的 ASP.NET Core 应用程序,请在部署应用的计算机上安装并运行远程工具,然后从 Visual Studio 附加到正在运行的应用。

远程调试器组件

本指南介绍如何设置和配置 Visual Studio ASP.NET Core、将其部署到 IIS 以及从 Visual Studio 附加远程调试器。 若要远程调试 ASP.NET 4.8,请参阅 IIS 计算机上的远程调试 ASP.NET 。 还可以使用 Azure 在 IIS 上部署和调试。 有关 Azure 应用服务,请参阅 Azure 上的远程调试 ASP.NET Core,或者对于 Visual Studio Enterprise,请使用 Snapshot Debugger(需要 .NET 4.6.1)。

先决条件

需要 Visual Studio 2019 或更高版本才能执行本文所示的步骤。

这些过程已在以下服务器配置上进行测试:

  • Windows Server 2022 和 IIS 10
  • Windows Server 2019 和 IIS 10
  • Windows Server 2016 和 IIS 10

网络要求

不支持在通过代理连接的两台计算机之间进行调试。 不建议通过高延迟或低带宽连接(例如拨号 Internet)或跨国家/地区的 Internet 进行调试,因为这样可能会失败或速度不可接受。 有关要求的完整列表,请参阅 要求

应用程序已在 IIS 中运行。

本文包括有关在 Windows 服务器上设置 IIS 的基本配置以及从 Visual Studio 部署应用的步骤。 包括这些步骤以确保服务器已安装所需的组件、应用可以正常运行以及你已准备好进行远程调试。

  • 如果你的应用在 IIS 中运行,并且你只想下载远程调试器并开始调试,请转到 在 Windows Server上下载并安装远程工具。

  • 如果想要帮助确保应用在 IIS 中正确设置、部署和运行,以便进行调试,请遵循本文中的所有步骤。

在 Visual Studio 计算机上创建 ASP.NET Core 应用程序

  1. 创建新的 ASP.NET Core Web 应用程序。

    在 Visual Studio 中,选择 “文件>开始”窗口 打开“开始”窗口,然后选择 创建新项目。 在搜索框中,键入 Web 应用,然后选择 C# 作为语言,然后选择 ASP.NET 核心 Web 应用程序(模型View-Controller),然后选择“下一步”。 在下一个屏幕上,将项目命名为MyASPApp,然后选择“下一步”

    选择建议的目标框架或 .NET 8,然后选择 创建。 版本必须与服务器上安装的版本匹配。

  2. 在 Controllers 文件夹中打开 HomeController.cs 文件,并在 Privacy 方法的 return View; 语句中设置断点。

    在旧模板中,打开 Privacy.cshtml.cs 文件,并在 OnGet 方法中设置断点。

在 Windows Server 上安装和配置 IIS

这些步骤仅显示 IIS 的基本配置。 有关更深入的信息或要安装到 Windows 桌面计算机,请参阅发布到 IIS使用 ASP.NET 3.5 和 ASP.NET 4.5 的 IIS 8.0

对于 Windows Server 操作系统,通过“管理”链接或“服务器管理器”中的“仪表板”链接使用“添加角色和功能”向导。 在“服务器角色”步骤中,选中“Web 服务器(IIS)”框

屏幕截图,显示“选择服务器角色”步骤中选择的“Web 服务器 IIS 角色”。

(Windows Server 2022)在显示的对话框中,选择 添加功能 添加 IIS 管理控制台。

角色服务 步骤中,选择所需的 IIS 角色服务或接受提供的默认角色服务。 如果要使用发布设置和 Web 部署启用部署,请确保选中以下功能:

  • IIS 管理脚本和工具
  • 管理服务
  • IIS 管理控制台

屏幕截图,其中显示了已选择的 IIS 管理脚本和工具。

继续执行确认步骤以安装 Web 服务器角色和服务。 安装 Web 服务器(IIS)角色后,不需要重启服务器/IIS。

更新 Windows Server 上的浏览器安全设置

如果使用较旧版本的 Windows Server,可能需要将某些域添加为受信任的站点,以便下载某些 Web 服务器组件。 通过以下步骤将受信任的站点添加:转到“Internet 选项”>“安全”>“受信任的站点”>“站点”。 添加以下域。

  • microsoft.com
  • go.microsoft.com
  • download.microsoft.com
  • iis.net

下载软件时,可能会收到请求来授予加载各种网站脚本和资源的权限。 其中一些资源不是必需的,但为了简化该过程,请在出现提示时选择 添加

在 Windows Server 上安装 ASP.NET Core

  1. 在托管系统上安装 .NET Core 托管捆绑包。 捆绑包安装 .NET Core 运行时、.NET Core 库和 ASP.NET Core 模块。 有关更深入的说明,请参阅发布到 IIS

    对于当前的 .NET Core 托管捆绑包,请安装 ASP.NET 核心托管捆绑包

    备注

    如果以前安装了 IIS,则 ASP.NET Core IIS 模块随 ASP.NET Core 一起安装。 否则,请手动安装 ASP.NET Core IIS 模块。

    对于 .NET Core 2,请安装 .NET Core Windows Server 托管

    备注

    如果系统没有 Internet 连接,请在安装 .NET Core Windows Server 托管捆绑包之前获取并安装 Microsoft Visual C++ 2015 Redistributable

  2. 重启系统(或在命令提示符处依次执行“net stop was /y”和“net start w3svc”,了解系统路径的更改)

选择部署选项

如果需要将应用部署到 IIS 的帮助,请考虑以下选项:

  • 通过在 IIS 中创建发布设置文件并在 Visual Studio 中导入设置来部署。 在某些情况下,这是部署应用的快速方法。 创建发布设置文件时,权限会自动在 IIS 中设置。

  • 通过发布到本地文件夹并将首选方法的输出复制到 IIS 上已准备的应用文件夹进行部署。

(可选)使用发布设置文件进行部署

可以使用此选项创建发布设置文件并将其导入 Visual Studio。

备注

如果要手动配置 Web 部署,而不是导入发布设置,则需要确保服务器上的应用文件夹配置了正确的值和权限(请参阅 配置 ASP.NET 网站)。

配置 ASP.NET 核心网站

  1. 在 IIS 管理器的左窗格中 连接下,选择 应用程序池。 打开 DefaultAppPool,并将 .NET CLR 版本 设置为 无托管代码。 ASP.NET Core 需要此操作。 默认网站使用 DefaultAppPool。

  2. 停止并重启 DefaultAppPool。

在 Windows Server 上安装和配置 Web 部署

Web 部署提供其他配置功能,用于从 UI 创建发布设置文件。

备注

Web 平台安装程序于 22 年 7 月 1 日达到生命周期结束。 有关详细信息,请参阅 Web 平台安装程序 - 终止支持并停用产品/应用程序源。 可以直接安装 Web 部署 4.0 来创建发布设置文件。

  1. 如果尚未安装 IIS 管理脚本和工具,请立即安装。

    转到“选择>Web 服务器(IIS)>管理工具的服务器角色,然后选择 IIS 管理脚本和工具 角色,单击 下一步,然后安装该角色。

    安装 IIS 管理脚本和工具

    需要脚本和工具才能生成发布设置文件。

    请确保还安装 管理服务,并 IIS 管理控制台(可能已安装)。

  2. 在 Windows Server 上,下载 Web Deploy 4.0

  3. 运行 Web 部署安装程序,并确保选择“完全安装”而不是典型安装

    完成安装后,即可获取生成发布设置文件所需的组件。 (如果改为选择“自定义”,则会可以看到组件列表,如下图所示。

    显示 Web 部署 4.0 组件的屏幕截图

  4. (可选)通过打开 控制面板 > 系统和安全性 > 管理工具 > 服务,确保 Web 部署正常运行,并确保:

    • Web 部署代理服务 正在运行(旧版本中的服务名称不同)。

    • Web 管理服务 正在运行。

    如果其中一个代理服务未运行,请重启 Web 部署代理服务

    如果 Web 部署代理服务根本不存在,请转到 控制面板 > 程序 > 卸载程序,找到 Microsoft Web 部署 <版本>。 选择“更改”安装,并确保对 Web 部署组件选择“将安装到本地硬盘”。 完成更改安装步骤。

在 Windows Server 上的 IIS 中创建发布设置文件

  1. 关闭并重新打开 IIS 管理控制台,以在 UI 中显示更新的配置选项。

  2. 在 IIS 中,右键单击 默认网站,选择 部署>配置 Web 部署发布

    配置 Web 部署配置

    如果未看到“部署”菜单,请参阅上一部分以验证 Web 部署是否正在运行。

  3. 在“配置 Web 部署发布”对话框中检查设置。

  4. 单击 设置

    结果 面板中,输出显示向指定用户授予访问权限,并且已在对话框中显示的位置生成具有 .publishsettings 文件扩展名的文件。

    <?xml version="1.0" encoding="utf-8"?>
    <publishData>
      <publishProfile
        publishUrl="https://myhostname:8172/msdeploy.axd"
        msdeploySite="Default Web Site"
        destinationAppUrl="http://myhostname:80/"
        profileName="Default Settings"
        publishMethod="MSDeploy"
        userName="myhostname\myusername" />
    </publishData>
    

    根据 Windows Server 和 IIS 配置,可以在 XML 文件中看到不同的值。 下面是有关所见值的一些详细信息:

    • publishUrl 属性中引用的 msdeploy.axd 文件是 Web 部署的动态生成的 HTTP 处理程序文件。 (出于测试目的,http://myhostname:8172 通常也有效。

    • publishUrl 端口设置为端口 8172,这是 Web 部署的默认值。

    • destinationAppUrl 端口设置为端口 80,这是 IIS 的默认值。

    • 如果在后续步骤中,无法使用主机名从 Visual Studio 连接到远程主机,请测试服务器的 IP 地址以代替主机名。

      备注

      如果要发布到在 Azure VM 上运行的 IIS,则必须在网络安全组中打开 Web 部署和 IIS 的入站端口。 有关详细信息,请参阅 打开虚拟机的端口。

  5. 将此文件复制到运行 Visual Studio 的计算机。

在 Visual Studio 中导入发布设置并部署

  1. 如果计算机上的 Visual Studio 中打开有 ASP.NET 项目,则在该计算机的解决方案资源管理器中右键单击该项目,然后选择“发布”

    如果先前配置了任何发布配置文件,则“发布”窗格会显示。 单击“新建”或“创建新配置文件”

  2. 选择该选项以导入配置文件。

    在“发布”对话框中,单击“导入配置文件”

    选择发布

  3. 导航到在上一节中创建的发布设置文件的位置。

  4. 导入发布设置文件 对话框中,导航到并选择在上一部分中创建的配置文件,然后单击 打开

    单击 完成 以保存发布配置文件,然后单击 发布

    Visual Studio 将开始部署过程,“输出”窗口显示进度和结果。

    如果遇到任何部署错误,请单击“更多操作”>以编辑设置。 修改设置,然后单击 验证 以测试新设置。 如果未找到主机名,请在 服务器目标 URL 字段中尝试使用 IP 地址而不是主机名。

    “发布”工具 中编辑设置

应用成功部署后,它应自动启动。

  • 如果应用在部署后未启动,请启动 IIS 中的应用以验证它是否正常运行。
  • 对于 ASP.NET Core,请确保 DefaultAppPool 的应用程序池字段已设置为 无托管代码

准备就绪后,切换到调试配置。

重要

如果选择调试发布配置,请在发布时禁用 web.config 文件中的调试。

  1. 选择“更多选项”>“编辑”以编辑配置文件,然后选择“设置”
  2. 选择 保存,然后重新发布应用。
  3. 选择“调试”配置,然后在“文件发布”选项下选择“删除目标处的其他文件”
  1. 选择“编辑”以编辑配置文件,然后选择“设置”
  2. 选择 保存,然后重新发布应用。
  3. 选择“调试”配置,然后在“文件发布”选项下选择“删除目标处的其他文件”

警告

使用用户名和密码凭据(基本身份验证)并不是最安全的身份验证方法。 尽可能使用替代方法。 例如,从 Visual Studio 发布一个包,然后使用命令行中的 WebDeploy.exe 部署包。 使用此方法,可以使用 IIS 管理器配置可以发布到 Web 服务器的授权 Windows 用户,并在该 Windows 用户帐户下运行 WebDeploy.exe。 请参阅在 IIS 8.0 或更高版本上安装和配置 Web 部署。 如果使用密码凭据,请确保使用强密码,并保护密码不被泄露或共享。

(可选)通过发布到本地文件夹进行部署

如果要使用 PowerShell、RoboCopy 将应用复制到 IIS,或者想要手动复制文件,可以使用此选项来部署应用。

在 Windows Server 计算机上配置 ASP.NET 核心网站

  1. 打开 Windows 资源管理器并创建新文件夹,C:\Publish,以用于部署 ASP.NET Core 项目。

  2. 如果尚未打开,请打开 Internet Information Services (IIS) 管理器。 (在服务器管理器的左窗格中,选择 IIS。 右键单击服务器并选择 Internet Information Services (IIS) 管理器。)

  3. 在左窗格中的“连接”下,转到“站点”

  4. 选择 默认网站,选择 基本设置,并将 物理路径 设置为 C:\Publish

  5. 右键单击 默认网站 节点,然后选择 添加应用程序

  6. 别名 字段设置为 MyASPApp,接受默认应用程序池(DefaultAppPool),并将 物理路径 设置为 C:\Publish

  7. 在“连接”下,选择“应用程序池”DefaultAppPool 打开,并将应用程序池字段设置为 无托管代码

  8. 右键单击 IIS 管理器中的新站点,选择 编辑权限,并确保 IUSR、IIS_IUSRS 或配置为访问 Web 应用的用户是具有读取 & 执行权限的授权用户。

    如果没有看到其中任何一个用户具有访问权限,请执行相应步骤将 IUSR 添加为具有读取和执行权限的用户。

重要

有关内置帐户的安全信息,请参阅 了解 IIS 7中的 Built-In 用户帐户和组帐户。

通过从 Visual Studio 发布到本地文件夹来发布和部署应用

还可以使用文件系统或其他工具发布和部署应用。

  1. 解决方案资源管理器中,右键单击项目节点并选择 发布(对于 Web 窗体,发布 Web 应用)。

    如果先前配置了任何发布配置文件,则“发布”窗格会显示。 单击“新建配置文件”

  2. 发布 对话框中,选择 文件夹,单击 浏览,并创建新文件夹,C:\Publish

    Visual Studio 中“选取发布目标”对话框的屏幕截图,其中选择了“C:\Publish”作为发布目标。

    单击“完成”保存发布配置文件。

    Visual Studio 中“选取发布目标”对话框的屏幕截图,其中选择了“C:\Publish”作为发布目标。

    单击“完成”保存发布配置文件。

  3. 切换到调试配置。

    选择“编辑”以编辑配置文件,然后选择“设置”。 选择“调试”配置,然后在“文件发布”选项下选择“删除目标处的其他文件”

    “发布”对话框中“设置”选项卡的屏幕截图。配置设置为“调试”,并且已选择“发布”按钮。

    备注

    如果使用发布版本,请在发布时禁用 web.config 文件中的调试。

  4. 单击“发布”

    应用程序将项目的 调试 配置发布到本地文件夹。 进度显示在“输出”窗口中。

  5. 将 ASP.NET 项目目录从 Visual Studio 计算机复制到为 ASP.NET 应用配置的本地目录(在此示例中,C:\Publish)在 Windows Server 计算机上。 在本教程中,我们假设要手动复制,但可以使用 PowerShell、Xcopy 或 Robocopy 等其他工具。

    谨慎

    如果需要更改代码或重新生成,则必须重新发布并重复此步骤。 复制到远程计算机的可执行文件必须与本地源和符号完全匹配。 如果不这样做,在尝试调试进程时,Visual Studio 中将收到 cannot find or open the PDB file 警告。

  6. 在 Windows Server 上,通过在浏览器中打开应用来验证是否可以正确运行应用。

    如果应用未正确运行,则服务器上安装的 ASP.NET 版本与 Visual Studio 计算机之间可能存在不匹配的情况,或者 IIS 或网站配置可能存在问题。 重新检查前面的步骤。

在 Windows Server 上下载并安装远程工具

下载与 Visual Studio 版本匹配的远程工具版本。

在要调试的远程设备或服务器上,而不是 Visual Studio 计算机,从下表中的链接下载并安装正确的远程工具版本。

  • 下载 Visual Studio 版本的远程工具的最新更新。 早期远程工具版本与更高版本的 Visual Studio 不兼容。 (例如,如果使用 Visual Studio 2019,请下载 Visual Studio 2019 远程工具的最新更新。在此方案中,请勿下载适用于 Visual Studio 2022 的远程工具。
  • 下载与您要安装的计算机具有相同架构的远程工具。 例如,如果要在运行 x64 操作系统的远程计算机上调试 x86 应用程序,请安装 x64 远程工具。 若要在 ARM64 操作系统上调试 x86、ARM 或 x64 应用程序,请安装 ARM64 远程工具。
版本 链接 笔记
Visual Studio 2022 远程工具 与所有 Visual Studio 2022 版本兼容。 下载与设备操作系统(x86、x64(AMD64)或 ARM64 匹配的版本。 在较旧版本的 Windows Server 上,请参阅 取消阻止文件下载 以获取有关下载远程工具的帮助。
Visual Studio 2019 远程工具 Visual Studio 2019 的远程工具可从 My.VisualStudio.com 获取。 如果系统提示,请加入免费的 Visual Studio Dev Essentials 计划,或使用 Visual Studio 订阅 ID 登录。 下载与设备操作系统(x86、x64(AMD64)或 ARM64 匹配的版本。 在较旧版本的 Windows Server 上,请参阅 取消阻止文件下载 以获取有关下载远程工具的帮助。
Visual Studio 2017 远程工具 Visual Studio 2017 的远程工具可从 My.VisualStudio.com 获取。 如果系统提示,请加入免费的 Visual Studio Dev Essentials 计划,或使用 Visual Studio 订阅 ID 登录。 下载与设备操作系统(x86、x64(AMD64)或 ARM64 匹配的版本。 在 Windows Server 上,请参阅 取消阻止文件下载 以获取有关下载远程工具的帮助。
Visual Studio 2015 远程工具 Visual Studio 2015 的远程工具可从 My.VisualStudio.com 获取。 如果系统提示,请加入免费的 Visual Studio Dev Essentials 计划,或使用 Visual Studio 订阅 ID 登录。 在 Windows Server 上,请参阅 取消阻止文件下载 以获取有关下载远程工具的帮助。
Visual Studio 2013 远程工具 Visual Studio 2013 文档中的“下载”页
Visual Studio 2012 远程工具 Visual Studio 2012 文档中的“下载”页
版本 链接 笔记
Visual Studio 2019 远程工具 与所有 Visual Studio 2019 版本兼容。 下载与设备操作系统(x86、x64(AMD64)或 ARM64 匹配的版本。 在 Windows Server 上,请参阅 取消阻止文件下载 以获取有关下载远程工具的帮助。 对于最新版本的远程工具,请打开 Visual Studio 2022 文档
Visual Studio 2017 远程工具 与所有 Visual Studio 2017 版本兼容。 下载与设备操作系统(x86、x64(AMD64)或 ARM64 匹配的版本。 在 Windows Server 上,请参阅 取消阻止文件下载 以获取有关下载远程工具的帮助。
Visual Studio 2015 远程工具 Visual Studio 2015 的远程工具可从 My.VisualStudio.com 获取。 如果系统提示,请加入免费的 Visual Studio Dev Essentials 计划,或使用 Visual Studio 订阅 ID 登录。 在 Windows Server 上,请参阅 取消阻止文件下载 以获取有关下载远程工具的帮助。
Visual Studio 2013 远程工具 Visual Studio 2013 文档中的“下载”页
Visual Studio 2012 远程工具 Visual Studio 2012 文档中的“下载”页

可以通过将 msvsmon.exe 复制到远程计算机而不是安装远程工具来运行远程调试器。 但是,仅当安装远程工具时,远程调试器配置向导(rdbgwiz.exe)才可用。 如果要将远程调试器作为服务运行,可能需要使用向导进行配置。 有关详细信息,请参阅 (可选)将远程调试器配置为服务

备注

  • 若要在 ARM 设备上调试 Windows 10 或更高版本的应用,请使用 ARM64,它可用于最新版本的远程工具。
  • 若要在 Windows RT 设备上调试 Windows 10 应用,请使用 ARM(仅在 Visual Studio 2015 远程工具下载中可用)。
  • 若要在 ARM64 操作系统上调试 x64 应用,请运行随 ARM64 远程工具一起安装的 x64 msvsmon.exe。

在 Windows Server 上设置远程调试器

  1. 在远程计算机上,从“开始”菜单中查找并启动“远程调试器”

    如果远程计算机上没有管理权限,请右键单击 远程调试器 应用,然后选择 以管理员身份运行。 否则,请正常启动它。

    如果计划附加到以管理员身份运行的进程,或者正在其他用户帐户(如 IIS)下运行,请右键单击 远程调试器 应用,然后选择 以管理员身份运行。 有关详细信息,请参阅 以管理员身份运行远程调试器。

  2. 首次启动远程调试器(或在配置远程调试之前),将显示 远程调试配置 向导。

    在大多数情况下,请选择“下一步”,直到最后到达该向导的“配置 Windows 防火墙”页。

    远程调试器配置的屏幕截图。

    远程调试器配置的屏幕截图。

    如果未安装 Windows Web 服务 API(仅在 Windows Server 2008 R2 上发生),请选择“安装”按钮。

  3. 选择要在其中使用远程工具的至少一种网络类型。 如果计算机通过域连接,则必须选择第一项。 如果计算机通过工作组或家庭组连接,请根据需要选择第二项或第三项。

    接下来,选择 完成 以启动远程调试器。

    接下来,选择 配置远程调试 以启动远程调试器。

  4. 配置完成后,将显示 远程调试器 窗口。

    远程调试器窗口的屏幕截图,

    远程调试器窗口的屏幕截图,

    远程调试器现在正在等待连接。 使用显示的服务器名称和端口号在 Visual Studio 中设置远程连接配置。

若要停止远程调试器,请选择“文件”>“退出”。 你可以从“开始”菜单或通过以下命令行重新启动它

<Remote debugger installation directory>\msvsmon.exe

备注

如果需要为其他用户添加权限、更改远程调试器的身份验证模式或端口号,请参阅 配置远程调试器

有关以服务的形式运行远程调试器的信息,请参阅 将远程调试器作为服务运行

从 Visual Studio 计算机附加到 ASP.NET Core 应用程序

从 Visual Studio 2022 版本 17.10 预览版 2 开始,“附加到进程”对话框已更改。 如果需要与旧对话框匹配的说明,请切换到 Visual Studio 2019 视图(本文中的左上方版本选择器)。

  1. 在 Visual Studio 计算机上,打开尝试调试的解决方案(MyASPApp(如果正在执行本文中的所有步骤)。

  2. 在 Visual Studio 中,选择“调试”>“附加到进程”(Ctrl+Alt+P)。

    提示

    在 Visual Studio 2017 及更高版本中,可以使用“调试”>“重新附加到进程...”(Shift + Alt + P) 重新附加到以前附加到的同一进程。

  3. 连接类型 设置为 Remote (Windows)

    将显示“连接目标”选项

    连接目标 设置为 <远程计算机名称>,然后按 Enter

    验证 Visual Studio 是否将所需的端口添加到计算机名称,格式如下:<远程计算机名称>:端口

    在 Visual Studio 2022 上,应会看到 <远程计算机名称>:4026

    需要端口。 如果未看到端口号,请手动添加。

  1. 在 Visual Studio 计算机上,打开尝试调试的解决方案(MyASPApp(如果正在执行本文中的所有步骤)。

  2. 在 Visual Studio 中,选择“调试”>“附加到进程”(Ctrl+Alt+P)。

    提示

    在 Visual Studio 2017 及更高版本中,可以使用“调试”>“重新附加到进程...”(Shift + Alt + P) 重新附加到以前附加到的同一进程。

  3. 将限定符字段设置为“<远程计算机名>”并按 Enter

    验证 Visual Studio 是否将所需的端口添加到计算机名称中,格式为:<远程计算机名称>:port

    在 Visual Studio 2019 上,应会看到 <远程计算机名称>:4024

    需要端口。 如果未看到端口号,请手动添加。

  1. 选择 刷新

    应会看到某些进程显示在 可用进程 窗口中。

    如果未看到任何进程,请尝试使用 IP 地址而不是远程计算机名称(需要端口)。 可以在命令行中使用 ipconfig 来获取 IPv4 地址。

    如果要使用 “查找”按钮,可能需要在服务器上 打开出站 UDP 端口 3702

  2. 勾选“显示所有用户的进程”

  3. 键入进程名称的第一个字母以快速查找应用。

    • 如果在 IIS 上使用 进程内托管模型,请选择正确的 w3wp.exe 进程。 从 .NET Core 3 开始,此过程是默认值。

    • 否则,请选择 dotnet.exe 进程。 (这是进程外托管模型。

    如果有多个进程显示 w3wp.exedotnet.exe,请检查 用户名 列。 在某些情况下,用户名 列显示应用池名称,例如 IIS APPPOOL\DefaultAppPool。 如果看到应用池,但它不唯一,请为要调试的应用实例创建新的命名应用池,然后可以轻松地在“用户名” 列中找到它。

    “附加到进程”对话框的屏幕截图。

    “附加到进程”对话框的屏幕截图。

  4. 选择 附加

  5. 打开远程计算机的网站。 在浏览器中,转到 http://<远程计算机名>

    您应该能够看到 ASP.NET 网页。

  6. 在正在运行的 ASP.NET 应用程序中,选择指向 隐私 页的链接。

    应在 Visual Studio 中命中断点。

    如果无法附加或命中断点,请参阅远程调试疑难解答

IIS 部署疑难解答

  • 如果无法使用主机名连接到主机,请尝试改用 IP 地址。
  • 请确保在远程服务器上打开所需的端口。
  • 对于 ASP.NET Core,需要确保将 DefaultAppPool 的应用程序池字段设置为“无托管代码”
  • 验证应用中使用的 ASP.NET 版本是否与服务器上安装的版本相同。 对于应用,可以在 属性 页中查看和设置版本。 若要将应用设置为其他版本,必须安装该版本。
  • 如果应用尝试打开,但会看到证书警告,请选择信任站点。 如果已关闭警告,则可以在项目中编辑发布配置文件 *.pubxml 文件,并添加以下元素(仅用于测试):<AllowUntrustedCertificate>true</AllowUntrustedCertificate>
  • 部署后,在 IIS 中启动应用以测试它是否正确部署。
  • 检查 Visual Studio 中的“输出”窗口以获取状态信息,并检查错误消息。

在 Windows Server 上打开所需的端口

在大多数设置中,安装 ASP.NET 和远程调试器会打开所需的端口。 但是,可能需要验证端口是否处于打开状态。

备注

在 Azure VM 上,必须通过 网络安全组打开端口。

所需的端口:

  • 80:IIS(HTTP)必需。
  • UDP 3702:(可选)发现端口允许您在连接到 Visual Studio 中的远程调试器时使用 查找 按钮。

此外,ASP.NET 安装应已打开这些端口:

  • 8172:(可选)需要 Web 部署才能从 Visual Studio 部署应用

打开端口

  1. 若要在 Windows Server 上打开端口,请打开“开始”菜单,搜索“Windows Defender 防火墙”或“高级安全 Windows 防火墙”

    对于 Windows Defender 防火墙 ,请选择 高级设置

  2. 然后选择 入站规则,> 新规则,> 端口,接着选择 下一步。 (对于 UDP 3702,请改为选择“出站规则”。)

  3. 特定本地端口下,输入端口号,选择 下一步

  4. 选择 “允许连接”,选择 “下一步”

  5. 选择一个或多个要为端口启用的网络类型,然后选择下一步

    选择的类型必须包括远程计算机连接到的网络。

  6. 为入站规则添加名称(例如,IIS、Web 部署或 msvsmon),然后选择“完成”

    应在“入站规则”或“出站规则”列表中看到新规则。

    若要详细了解如何配置 Windows 防火墙,请参阅 配置 Windows 防火墙进行远程调试

  7. 为其他所需端口创建更多规则。