受Azure WAF/Front Door保护的Azure Web App无法进行Visual Studio远程调试
该场景支持远程调试,你遇到的连接失败问题核心原因是WAF/Front Door默认拦截非标准Web端口的入站流量,VS2019远程调试默认使用的4024端口不在默认放行范围内。
- 临时调试方案(推荐)
调试阶段直接使用Web App原生域名(格式为*.azurewebsites.net)发起调试请求,不需要走Front Door链路。同时需在Web App的网络访问限制配置中,开放你本地开发机器的公网IP对4024端口的入站权限,调试完成后再切回Front Door的自定义域名即可。 - 走Front Door调试方案(仅测试环境使用,禁止在生产环境配置)
- 在Front Door自定义路由规则中新增4024端口的流量转发规则,将对应端口的流量转发到后端Web App
- 在WAF策略中新增自定义放行规则,规则匹配条件为源IP是你开发机器的公网IP、目的端口为4024,优先级设为最高避免被默认规则集拦截
- 调试结束后立即删除上述两条规则,避免引入安全风险
- 通用检查项
- 确认Web App远程调试配置中选择的Visual Studio版本和你本地使用的VS2019版本匹配,功能开启后会自动在App Service内部开放对应调试端口权限
- 确认本地开发机器的防火墙出站规则没有拦截4024端口的TCP请求
- 若仍连接失败,可进入Web App的Kudu控制台进程管理器,确认
MSVSMON.EXE进程是否正常运行,未运行的话重启Web App后重试
你提供的报错信息中文翻译如下:
System.Runtime.InteropServices.COMException (0x89710023): 无法连接到名为“.”的Microsoft Visual Studio远程调试器。远程计算机上似乎没有运行Visual Studio 2019远程调试器(MSVSMON.EXE)。该问题可能是防火墙阻止了与远程计算机的通信导致的,请查阅帮助文档获取远程调试配置的相关协助。
在 Microsoft.WebTools.Azure.VS.Operations.IDebuggerInternal120.ConnectToServer(String szServerName, VsDebugRemoteConnectOptions[] pConnectOptions, CONNECT_REASON ConnectReason, Int32 fIncrementUsageCount, IDebugCoreServer3& ppServer)
在 Microsoft.WebTools.Azure.VS.Operations.RemoteDiagnosticsSessionBase`1.ConnectToServer(String site, String user, String password)
内容的提问来源于stack exchange,提问作者JeroenP

