SignalR 2.2.0'Context.ConnectionId'.Net客户端无法手动设置

时间:2015-04-23 23:57:30

标签: c# signalr

当我这样做时:

Connection = new HubConnection(uri);
Connection.ConnectionId = "89668c32-c654-40a2-96c3-21a888f31c9f";
Connection.Start(new LongPollingTransport())

第二行什么也没做,我的中心每次看到不同的ID。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

服务器分配和跟踪连接ID。客户端在连接协商期间接收连接ID。除了连接ID之外,在连接协商期间,客户端还会收到在服务器上计算的连接令牌(您可以在this blog post中找到有关连接协商和SignalR协议的更多详细信息)。使用用户名和连接ID计算连接令牌,然后加密。客户端必须在每个请求中发送连接令牌。如果客户端未发送连接令牌或客户端发送的连接令牌与连接将被拒绝的加密数据不匹配(更多关于连接令牌here)。因此,即使您可能通过重用连接ID /连接令牌在您的环境中破解此问题,服务器也知道在客户端上设置连接ID不是受支持的方案,实际上ConnectionId属性可能甚至不应该具有setter(事实上IConnection.ConnectionId属性只有一个吸气剂。)