SignalR Core中HubConnection无State属性,如何获取连接状态?
解决SignalR Core中获取HubConnection连接状态的问题
嘿,这个坑我刚踩过!在ASP.NET Core SignalR里,HubConnection的状态属性其实并没有消失,只是和旧版SignalR的实现有几个小区别,才导致你编译报错了。
核心问题:枚举类型和依赖的变化
旧版SignalR里的ConnectionState枚举,在Core版本中被替换成了**HubConnectionState**,而且你得确保项目配置了正确的依赖:
- 先确认安装了
Microsoft.AspNetCore.SignalR.ClientNuGet包(这是客户端连接SignalR Hub的必备依赖) - 在代码文件顶部添加命名空间引用:
using Microsoft.AspNetCore.SignalR.Client;
正确获取连接状态的代码
调整后的代码就能正常编译了,State属性依然存在,只是它的类型变成了HubConnectionState:
var _connection = new HubConnectionBuilder() .WithUrl("https://foo.com") .Build(); Console.WriteLine(_connection.State); // 现在可以正常输出连接状态
HubConnectionState枚举包含的成员和旧版完全对应:
Connecting:正在建立连接Connected:连接已成功建立Reconnecting:连接断开后正在尝试重连Disconnected:连接已断开
监听状态变化(进阶用法)
如果你需要实时感知连接状态的切换,可以订阅StateChanged事件,这样状态变动时能及时收到通知:
_connection.StateChanged += (sender, stateArgs) => { Console.WriteLine($"连接状态更新:{stateArgs.OldState} → {stateArgs.NewState}"); };
内容的提问来源于stack exchange,提问作者Mister Epic
相关产品推荐
相关产品推荐

