2013-02-27 10 views
6

Czy istnieje możliwość ustawienia pliku cookie z poziomu koncentratora SignalR, w szczególności metody OnConnected. Chcę wysłać plik cookie z identyfikatorem sesji.Ustaw plik cookie z koncentratora SignalR na serwerze

Próbowałem tego, ale nie działało, wygląda też na niezręczne, ponieważ nie jestem pewien, dlaczego muszę podać parę wartości klucza i pliku cookie.

public override Task OnConnected() 
{ 
    var guid = new Guid(); 
    Context.RequestCookies.Add("SessionID", new Microsoft.AspNet.SignalR.Cookie("SessionID", guid.ToString())); 
    return null; 
} 

Odpowiedz

2

To stara sprawa, ale w przypadku gdy ktoś potknie się na nim, istnieje sposób, aby dodać ciasteczka z koncentratora w signalr 2.0+ . HttpContextBase można uzyskać poprzez kontekście żądanie piasta, więc można zrobić coś takiego:

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

Wybrałem podklasę i używam opcji PersistentConnection zamiast Hub, aby mieć więcej opcji na serwerze.

W moim przypadku nadpisuję OnConnectedAsync i używam connectionId tam, aby śledzić połączenia/sesje. Może możesz wziąć pod uwagę to podejście?

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

Nie mogę przełączyć z PersistentConnections do koncentratorów, to rodzaj radykalnej zmiany –

1

Ostatecznie zdecydowałem się ustawić plik cookie z obsługującego kontrolera MVC, nie znalazłem ani tego, aby ustawić to w wywołanie SignalR.

-2

prostu próbowałem to samo i to wydaje się działać:

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

mówi się o SignalR, ale nie MVC. – Agat

+0

Dawno temu, ale jestem pewien, że zrobiłem to w kontekście SignalR. – modec

+0

Zaktualizuj swoją odpowiedź z poprawką, a ja spiszę. – Agat

Powiązane problemy