2014-02-28 6 views
0

SignalR 1.x에서 SignalR 2.x로 마이그레이션하려고 시도 중입니다. 몇 가지 문제가 있습니다.SignalR 2.x 릴리스에서 System.Web HTTPContext SessionId를 사용하기위한 해결 방법이 있습니까?

이 응용 프로그램은 SignalR 1.x를 사용하여 백엔드 및 프런트 엔드 클라이언트간에 "실시간"(푸시) 통신을 수행합니다. SignalR 1.x에서는 System.Web HttpContext 세션 상태에 액세스 할 수있었습니다. 특히, 우리는 SessionId를 사용하여 활성 SignalR 연결을 추적하고 관리했습니다.

이제 SignalR 2.x로 업그레이드하려고합니다. 아쉽게도 System.Web HttpContext에 액세스하면 더 이상 지원되지 않습니다. 이는 SignalR 요청이 세션 상태 모듈이 초기화되기 전에 처리되기 때문입니다.

이제 SessionId 이외의 연결을 고유하게 추적하는 다른 방법을 찾아야합니다. 한 가지 생각은 클라이언트 측에서 무언가를 얻고 초기에 SignalR 통지에 가입하도록 요청하는 것입니다. 나는이 요청 쿠키를보고 있었고 거기에 사용할 수있는 것이 있는지 궁금해했습니다.

이 문제에 대한 의견이 있으십니까?

덕분에, 존은 말하기 대신 세션의

답변

1

는 SignalR은 연결을 사용합니다. http://asp.net/signalr 웹 사이트에 따르면, "허브에 연결하는 각 클라이언트는 고유 연결 ID를 전달합니다. 당신은 허브 컨텍스트의 Context.ConnectionId 속성이 값을 검색 할 수 있습니다..."

는 또한, Context 여전히 사용자 속성이 있습니다, 따라서 사용자의 ID (따라서 사용자 이름)를 유지 (Context.User.Identity.Name)

따라서 세션을 사용하는 대신 ConnectionId를 사용하여 사용자를 식별 할 수 있습니다.

이 페이지는 다음 세부 정보로 이동합니다. http://www.asp.net/signalr/overview/signalr-20/hubs-api/mapping-users-to-connections