2014-02-25 3 views
5

신호 R1.x tgo SignalR 2.x를 사용하여 ASP.Net MVC 응용 프로그램을 마이그레이션하려고합니다. 나는 앞으로 나아갈 우리의 탐구에 확실히 문제가되는 문제를 발견했다.ASP .Net MVC 응용 프로그램에서 SignalR 2.x 라이브러리를 사용하는 HTTPContext.Current.Session이 null 인 이유는 무엇입니까?

웹 응용 프로그램은 MVC 기반이며 HttpContext.Current.Session 변수를 많이 사용합니다. SignalR 1.x로 실행할 때, 모든 것이 잘되고 Session과 멋지다.

SignalR 2.x로 업그레이드 할 때 Session이 갑자기 null입니다.

나는 약간의 인터넷 검색을했고,이 문제에 대한 다음 링크를 발견 : 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. 

나는 것을 상상 : HTTPContext.Current.Session is nul in SignalR...need alternate to Session state while using SignalR

추가 조사는 다음과 같은 정보 재미있는 이야기를 밝혀 이것은 많은 ASP .Net MVC 기반 응용 프로그램을 무너 뜨릴 것입니다. 해결 방법이 있습니까?

이것은 진실로 디자인 되었습니까? 아니면 2.x에서 signalR을 시작하기 위해 oWin ::> Startup :: Configuration() {app.MapSignalR();}을 사용한 결과입니까?

가능한 경우이 문제를 해결하고 솔루션이 그리 고통스럽지 않으면 계속 2.x로 옮길 것을 고려할 것입니다.

생각하십니까?

답변

6

세션 상태는 동일한 사용자의 동시 요청 처리를 방해하고 WebSockets 요청에서 지원되지 않으므로 SignalR 내에서 지원되지 않습니다. 2.0에서는 세션 상태 모듈이 초기화되기 전에 SignalR 요청이 처리되기 때문에이 속성은 null입니다. 이것은 SignalR이 System.Web 기반 ASP.NET 응용 프로그램 내부에서 호스팅되는 방식에서 1.0에서 변경되었습니다 (1.0에서는 ASP.NET 라우트 테이블의 경로를 사용했으며, 2.0에서는 Microsoft.Owin에서 제공하는 OWIN 호스팅 모듈을 사용함). Host.SystemWeb).

이것은 응용 프로그램의 나머지 부분이 아닌 SignalR 클래스 (허브 등) 내에서의 세션 사용에만 영향을줍니다.

+3

이 문제를 해결하는 방법 – SandhiyaSomeshwaran