2014-02-25 6 views
5

Ich versuche, unsere ASP.Net MVC-Anwendung von Signal R1.x tgo SignalR 2.x zu migrieren. Ich habe gerade ein Problem gefunden, das uns in unserem Bestreben, Fortschritte zu machen, sicherlich Probleme bereiten wird.Warum ist HTTPContext.Current.Session null mit SignalR 2.x Bibliotheken in einer ASP.NET MVC-Anwendung?

Unsere Webanwendung basiert auf MVC und verwendet die Variable HttpContext.Current.Session. Wenn man mit SignalR 1.x läuft, ist alles in bester Ordnung mit Session.

Beim Upgrade auf SignalR 2.x war Session plötzlich null.

habe ich ein wenig googeln und fand die folgenden Links zum Thema: HTTPContext.Current.Session is nul in SignalR...need alternate to Session state while using SignalR

Weitere Untersuchungen haben die folgende Leckerbissen der Informationen offenbart: http://www.asp.net/signalr/overview/signalr-20/troubleshooting-and-debugging/troubleshooting

HTTPContext.Current.Session is null 
This behavior is by design. SignalR does not support the ASP.NET session state, 
since enabling the session state would break duplex messaging. 

Ich könnte mir vorstellen, dass Dies wird viele ASP.NET MVC-basierte Anwendungen brechen. Gibt es eine Problemumgehung dafür?

Ist dies wirklich von Entwurf, oder ist es ein Ergebnis der Verwendung von oWin ::> Startup :: Configuration() {app.MapSignalR();}, um SignalR in 2.x zu initiieren?

Wenn möglich, würde ich gerne herausfinden, und wenn die Lösung nicht so schmerzhaft ist, werden sie immer noch in Erwägung ziehen, auf 2.x zu verschieben.

Gedanken?

Antwort

6

Der Sitzungsstatus wird in SignalR nicht unterstützt, da er die Verarbeitung gleichzeitiger Anforderungen desselben Benutzers stört und nicht von WebSockets-Anforderungen unterstützt wird. In 2.0 ist die Eigenschaft null, da SignalR-Anforderungen behandelt werden, bevor das Sitzungsstatusmodul initialisiert wird. Dies war eine Änderung von 1.0, in der SignalR in system.Web-basierten ASP.NET-Anwendungen gehostet wird (in 1.0 wurde eine Route in der Tabelle "ropes" von ASP.NET verwendet, in 2.0 wird das von Microsoft.Owin bereitgestellte OWIN-Hostingmodul verwendet). Host.SystemWeb).

Hinweis: Dies betrifft nur die Verwendung der Sitzung innerhalb Ihrer SignalR-Klassen (Hubs usw.), nicht den Rest Ihrer Anwendung.

+3

So beheben Sie dieses Problem – SandhiyaSomeshwaran