即使页面刷新,我也会尝试保留我的连接ID。 我在客户端保存了一个cookie,但是在尝试检索它的时候 request.Cookies.Count为0。
这是界面实现:
public class ConnectionFactory : IConnectionIdPrefixGenerator
{
public string GenerateConnectionIdPrefix(IRequest request)
{
if (request.Cookies["signalrconnid"] != null)
{
return request.Cookies["signalrconnid"].Value;
}
return Guid.NewGuid().ToString();
}
}
这是从Start()函数调用的:
GlobalHost.DependencyResolver.Register(typeof(IConnectionIdPrefixGenerator), () => new ConnectionFactory());
这是客户方:
function setCookie(cName, value, exdays) {
var exdate = new Date(2013,1,1,0,0,0,0);
var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString ());
document.cookie = cName + "=" + c_value;
}
(不介意日期)
我看了很多关于它的帖子,但我没有得到有什么不同。
答案 0 :(得分:3)
正如@Chris Moutray指出的那样,最好不要以这种方式使用ConnectionId。如果我在你的位置,我会在客户端创建一个SessionId,将其存储在cookie或session storage中,传递该sessionId而不是connectionId,然后将其用作长期会话之间的适当映射和短期的联系。 (使用UserId作为映射的问题是用户可以同时从多个位置登录。)