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

Azure Blazor应用中使用websocket-sharp遇连接关闭问题求助

问题根源与解决方案

核心问题:Azure App Service的端口限制

Azure App Service不允许应用直接监听自定义端口(如3333),所有外部流量都会通过平台负载均衡器转发到应用的80(HTTP)或443(HTTPS)端口,你的自定义端口3333无法被外部客户端访问,这是连接失败的主要原因。

具体修复步骤

1. 修改服务端端口配置

不要硬编码3333端口,改用Azure提供的环境变量获取应用监听端口,或直接绑定到平台默认端口:

// 推荐:使用环境变量获取Azure分配的端口
var port = int.Parse(Environment.GetEnvironmentVariable("HTTP_PLATFORM_PORT") ?? "80");
m_WSServer = new WebSocketServer(port, true);
m_WSServer.AddWebSocketService<Laputa>("/Laputa");

2. 修正客户端连接地址

移除端口号3333,直接使用App Service域名,平台会自动处理端口转发:

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

3. 额外检查项

  • 再次确认Azure App Service的WebSocket功能已启用(Azure门户→你的应用→配置→常规设置→WebSocket,设为启用)
  • 验证websocket-sharp版本与当前.NET环境兼容,避免版本冲突
  • 查看Azure App Service日志(门户→你的应用→日志→应用服务日志),获取服务端启动或连接失败的具体错误信息

原理说明

Azure App Service作为PaaS平台,应用运行在沙箱环境中,自定义端口无法暴露到公网。所有外部请求(包括WebSocket)必须通过平台的80/443端口进入,再由平台转发到应用内部监听端口。你之前的自定义端口3333在本地可正常访问,但在Azure上无法被外部客户端连接,最终导致客户端触发onClose事件。

内容的提问来源于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 10:05:04