ASP.NET Core 6 Web API中SignalR无法触发OnConnectedAsync问题求助
问题解决:SignalR连接成功但OnConnectedAsync未触发
核心问题定位
你发送的握手JSON存在语法错误,导致SignalR无法完成协议握手,因此OnConnectedAsync不会被触发:
{ "protocol": "json, // 此处双引号未闭合,属于语法错误 "version": 1 }�
修复步骤
- 修正JSON语法:将
"json,改为"json",正确的握手消息应为:
{ "protocol": "json", "version": 1 }
- 保留分隔符:末尾的ASCII 0x1E字符是SignalR要求的消息结束标记,必须保留,不可删除。
逻辑说明
SignalR的WebSocket连接分为两个阶段:
- 第一阶段:TCP层面的Socket连接成功(这就是Postman显示连接成功的原因)
- 第二阶段:发送格式正确的握手消息,服务端验证通过后,才会触发
OnConnectedAsync,正式建立SignalR连接
若握手消息格式错误,服务端会拒绝后续SignalR交互,自然不会触发连接回调。
后续测试建议
修正握手消息后,即可触发OnConnectedAsync断点。调用SendMessage方法时,需按照SignalR的规范格式发送消息,示例:
{ "type": 1, "target": "SendMessage", "arguments": ["测试消息内容"] }
同样,消息末尾需添加ASCII 0x1E分隔符。
内容的提问来源于stack exchange,提问作者Muhammet İkbal
相关产品推荐
相关产品推荐

