You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure中.NET 9 Web应用与桌面应用的连接问题求助

问题分析与解决办法

核心原因

浏览器默认不信任自签名证书,不管是HTTP AJAX还是WebSocket请求,只要证书未被浏览器或操作系统的信任根证书库收录,就会被标记为不安全。另外,部署到Azure后,Web应用发起的127.0.0.1请求指向的是Azure服务器本地,而非用户的本地机器——如果你的目标是用户本地服务,这本身就是方向错误。

解决步骤

1. 替换自签名证书为受信任CA证书

这是生产环境的唯一合规方案:

  • 用公共免费CA(如Let's Encrypt)申请SSL证书,或直接使用Azure提供的App Service托管证书(免费且自动受浏览器信任),绑定到你的自定义域名。
  • 确保Minimal API的HTTPS端点使用该受信任证书,而非自签名证书。

2. 修正localhost请求的误区

如果你的请求目标是用户本地服务:

  • 不要直接请求127.0.0.1,改用本地隧道工具(如ngrok)将用户本地服务暴露到公网,Web应用请求隧道的HTTPS公网地址(隧道服务通常自带受信任证书)。
  • 若需更复杂的中转,可搭建WebSocket反向代理,但要额外处理身份验证和安全校验。

3. 开发调试临时方案(禁止生产使用)

仅用于内部测试场景:

  • 让用户手动访问Minimal API的HTTPS端点,在浏览器不安全提示中选择「高级」→「继续访问」,临时信任该自签名证书。
  • 或把自签名证书导入用户操作系统的信任根证书库,但仅适合小范围内部测试。

4. 配置Azure服务的SSL规则

  • 开启Azure App Service的「HTTPS Only」选项,强制所有请求走HTTPS。
  • 确保WebSocket请求使用wss://协议(安全版),且请求域名对应已绑定的受信任证书。示例代码调整:
// 错误写法(不安全)
const socket = new WebSocket('ws://127.0.0.1:5000/ws');
// 正确写法(安全)
const socket = new WebSocket('wss://your-custom-domain.azurewebsites.net/ws');

内容的提问来源于stack exchange,提问作者Tomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 18:54:57