在服务器上设置来自SignalR集线器的cookie
问题描述:
是否有任何方法可以在SignalR集线器中设置cookie,特别是OnConnected
方法。我想发送一个会话ID的cookie。在服务器上设置来自SignalR集线器的cookie
我试过这个,但它似乎没有工作,它也看起来尴尬,因为我不知道为什么我需要提供一个字符串和cookie的关键值对。
public override Task OnConnected()
{
var guid = new Guid();
Context.RequestCookies.Add("SessionID", new Microsoft.AspNet.SignalR.Cookie("SessionID", guid.ToString()));
return null;
}
答
这是一个老问题,但万一有人跌倒就可以了,有一种方法从枢纽signalr Cookie添加2.0+ 。该HttpContextBase可通过枢纽请求上下文访问,所以你可以做这样的事情:
var newCookie = new HttpCookie("cookieName", "cookieValue");
Context.Request.GetHttpContext().Response.Cookies.Add(newCookie);
答
我选择继承并使用PersistentConnection而不是Hub来在服务器上拥有更多选项。
在我的情况下,我重写OnConnectedAsync并使用那里的connectionId来跟踪连接/会话。也许你可以考虑这种方法?
protected override Task OnConnectedAsync(IRequest request, string connectionId)
{
答
我最终决定从服务的MVC控制器设置cookie,我没有找到反正在SignalR调用中设置它。
我真的不能从PersistentConnections到中心交换机,这是一种彻底的改变 – 2013-02-27 14:54:46