2013-02-27 65 views
6

是否有任何方法可以在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; 
} 

回答

2

這是一個老問題,但萬一有人跌倒就可以了,有一種方法從樞紐signalr Cookie添加2.0+ 。該HttpContextBase可通過樞紐請求上下文訪問,所以你可以做這樣的事情:

var newCookie = new HttpCookie("cookieName", "cookieValue"); 
Context.Request.GetHttpContext().Response.Cookies.Add(newCookie); 
0

我選擇繼承並使用PersistentConnection而不是Hub來在服務器上擁有更多選項。

在我的情況下,我重寫OnConnectedAsync並使用那裏的connectionId來跟蹤連接/會話。也許你可以考慮這種方法?

protected override Task OnConnectedAsync(IRequest request, string connectionId) 
    { 
+0

我真的不能從PersistentConnections到中心交換機,這是一種徹底的改變 – 2013-02-27 14:54:46

1

我最終決定從服務的MVC控制器設置cookie,我沒有找到反正在SignalR調用中設置它。

-2

我只是想同樣的事情,這似乎工作:

HttpContext.Current.Response.Cookies.Add(cookie); 
+0

的演講是關於SignalR的,但不MVC。 – Agat 2014-10-24 10:59:25

+0

很久以前,但很確定我是在SignalR上下文中完成的。 – modec 2014-10-25 12:24:34

+0

更正您的答案與更正,我會unminus。 – Agat 2014-10-28 09:58:13

相關問題