配置 Windows 防火墙进行远程调试

在受 Windows 防火墙保护的网络上,防火墙必须配置为允许远程调试。 Visual Studio 和远程调试工具尝试在安装或启动期间打开正确的防火墙端口,但可能还需要打开端口或手动允许应用。

本主题介绍如何将 Windows 防火墙配置为在 Windows 10、8/8.1 和 7 上启用远程调试;和 Windows Server 2012 R2、2012 和 2008 R2 计算机。 Visual Studio 和远程计算机不必运行相同的操作系统。 例如,Visual Studio 计算机可以运行 Windows 11,远程计算机可以运行 Windows Server 2012 R2。

注意

在不同操作系统和较旧版本的 Windows 上配置 Windows 防火墙的说明略有不同。 Windows 8/8.1、Windows 10 及更新版本以及 Windows Server 2012 设置使用单词 应用,而 Windows 7 和 Windows Server 2008 使用单词 程序

配置用于远程调试的端口

Visual Studio 和远程调试器尝试在安装或启动期间打开正确的端口。 但是,在某些情况下,例如第三方防火墙,可能需要手动打开端口。

打开端口:

  1. 在 Windows“开始”菜单中,搜索并打开“高级安全 Windows 防火墙”。 从 Windows 10 开始,为“高级安全 Windows Defender 防火墙”

  2. 对于新的传入端口,请选择 入站规则,然后选择 新规则。 对于传出规则,则改为选择“出站规则”。

  3. “新建入站规则向导”中,选择 端口,然后选择 “下一步”

  4. 根据下表中的端口号,选择 TCPUDP

  5. 特定本地端口下,输入下表中的端口号,然后选择“下一步”

  6. 选择“允许连接”,然后选择 下一步

  7. 选择要启用的一个或多个网络类型,包括远程连接的网络类型,然后选择 下一

  8. 添加规则的名称(例如,msvsmonIISWeb Deploy),然后选择 完成

    新规则应出现在“入站规则”或“出站规则”列表中,且处于选中状态。

使用 PowerShell 打开端口:

对于 Windows 防火墙,可以使用 PowerShell 命令,例如 New-NetFirewallRule

以下示例为远程计算机上的远程调试器打开端口 4026。 需要使用的端口和路径可能有所不同。

New-NetFirewallRule -DisplayName "msvsmon" -Direction Inbound -Program "Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\Remote Debugger\x64\msvsmon.exe" -LocalPort 4026 -Protocol TCP -Authentication Required -Action Allow

以下示例为远程计算机上的远程调试器打开端口 4024。 要使用的路径可能有所不同。

New-NetFirewallRule -DisplayName "msvsmon" -Direction Inbound -Program "Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Remote Debugger\x64\msvsmon.exe" -LocalPort 4024 -Protocol TCP -Authentication Required -Action Allow

远程计算机上用于启用远程调试的端口

对于远程调试,必须在远程计算机上打开以下端口:

端口 传入/传出 协议 说明
4026 传入 TCP 适用于 Visual Studio 2022。 有关详细信息,请参阅 Visual Studio 远程调试器端口分配
4025 传入 TCP 适用于 Visual Studio 2022 和 Microsoft Azure 应用服务。 此端口仅用于从 64 位版本的远程调试器远程调试 32 位进程。 有关详细信息,请参阅 Visual Studio 远程调试器端口分配
4024 传入 TCP 适用于 Microsoft Azure 应用服务。 有关详细信息,请参阅 Visual Studio 远程调试器端口分配
3702 传出 UDP (可选)进行远程调试程序发现的必需项。
端口 传入/传出 协议 说明
4024 传入 TCP 适用于 Visual Studio 2019 和 Microsoft Azure 应用服务。 端口号针对每个 Visual Studio 版本递增 2。 有关详细信息,请参阅 Visual Studio 远程调试器端口分配
4025 传入 TCP 适用于 Visual Studio 2019 和 Azure 应用服务。 此端口仅用于从 64 位版本的远程调试器远程调试 32 位进程。 有关详细信息,请参阅 Visual Studio 远程调试器端口分配
3702 传出 UDP (可选)进行远程调试程序发现的必需项。

如果在 工具>选项>调试中选择 使用托管兼容性模式,请打开这些额外的远程调试器端口。 调试器托管兼容性模式启用旧版 Visual Studio 2010 版本的调试器。

端口 传入/传出 协议 说明
135, 139, 445 传出 TCP 必填。
137, 138 传出 UDP 必填。

如果域策略要求通过 Internet 协议安全性(IPsec)执行网络通信,则必须在 Visual Studio 和远程计算机上打开其他端口。 若要在远程 Internet Information Services (IIS) Web 服务器上调试,请在远程计算机上打开端口 80。

端口 传入/传出 协议 说明
500, 4500 传出 UDP 如果域策略要求通过 IPsec 执行网络通信,则是必需的。
80 传出 TCP Web 服务器调试所必需的。

若要允许特定应用通过 Windows 防火墙,请参阅 通过 Windows 防火墙配置远程调试。

通过 Windows 防火墙允许远程调试器

配置远程调试器时,配置软件应打开正确的端口。 但是,在某些情况下,可能需要手动允许远程调试器通过防火墙。

若要允许远程调试器通过 Windows 防火墙:

  1. 在 Windows “开始”菜单中,搜索并打开 Windows 防火墙,或 Windows Defender 防火墙

  2. 选择“允许应用通过 Windows 防火墙

  3. 如果 远程调试器Visual Studio 远程调试器 未显示在 允许的应用和功能下,请选择 更改设置,然后选择 允许其他应用

  4. 如果 “添加应用”对话框中仍未列出远程调试器应用,请选择 浏览,然后导航到 <Visual Studio 安装目录>\Common7\IDE\Remote Debugger\<x86x64Appx>,具体取决于应用的相应体系结构。 选择 msvsmon.exe,然后选择 “添加”。

  5. 应用 列表中,选择刚添加 远程调试器。 选择 网络类型,然后选择一个或多个网络类型,包括远程连接的网络类型。

  6. 选择“添加”,然后选择“确定”。

对远程调试连接进行故障排除

如果无法使用远程调试器附加到应用,请确保远程调试防火墙端口、协议、网络类型和应用设置都是正确的。

  • 在 Windows “开始”菜单中,搜索并打开 “Windows 防火墙”,然后选择“允许应用通过 Windows 防火墙”。 确保 远程调试器Visual Studio 远程调试器 显示在 允许的应用和功能 列表中,其中选中了正确的网络类型。 如果不对,请添加正确的应用和设置

  • 在 Windows “开始”菜单中,搜索并打开具有高级安全性 的 Windows 防火墙。 请确保 远程调试器Visual Studio 远程调试器 显示在 入站规则 中(可选:出站规则)并且带有绿色勾选图标,并确保所有设置都是正确的。

    • 若要查看或更改规则设置,请右键单击列表中的 远程调试器 应用,然后选择 属性。 使用 属性 选项卡启用或禁用规则,或更改端口号、协议或网络类型。
    • 如果远程调试器应用未显示在规则列表中,添加和配置正确的端口