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

Azure部署Blazor项目WebSocket服务的配置问题求助

Blazor项目Azure部署WebSocket服务解决方案

核心问题说明

Azure App Service不允许应用直接监听自定义端口(如3333),所有外部流量通过Azure反向代理走80/443端口,且SSL由反向代理统一处理,无需应用自身配置SSL。


服务器端代码修改

1. 端口与绑定配置

放弃硬编码端口3333,改用Azure自动注入的PORT环境变量(本地开发可 fallback 到3333),同时禁用SSL(由Azure反向代理处理加密):

// 读取端口,本地开发默认3333
var port = Environment.GetEnvironmentVariable("PORT") ?? "3333";
// 绑定到所有可用网络接口,禁用SSL
m_WSServer = new WebSocketServer(IPAddress.Any, int.Parse(port), false);

或使用URL重载写法更直观:

var serverUrl = $"http://0.0.0.0:{Environment.GetEnvironmentVariable("PORT") ?? "3333"}";
m_WSServer = new WebSocketServer(serverUrl);

2. WebSocket服务路径保持不变

原路径配置无需修改:

m_WSServer.AddWebSocketService("/Laputa");

客户端代码修改

你的URL格式是正确的,直接将Web应用域名的https替换为wss,无需添加端口:

m_WSClient = new WebSocket("wss://myazureappname.azurewebsites.net/Laputa");

环境区分优化(可选)

为了本地开发与生产环境自动切换,可通过环境变量判断:

var isProduction = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Production";
var wsUrl = isProduction 
    ? "wss://myazureappname.azurewebsites.net/Laputa" 
    : "ws://localhost:3333/Laputa";
m_WSClient = new WebSocket(wsUrl);

必要配置检查

  1. 确认Azure门户中WebSocket功能已启用:进入应用服务 → 设置 → 配置 → 常规设置,将WebSocket选项设为「启用」。
  2. 确保websocket-sharp使用最新稳定版本,避免兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 21:23:32