OnConnected
/をオーバーライドしてから、 is nullOnDisconnected
のセッションを探すと。HttpContext.Current.Session
この時点で、セッションはすでに作成されていると想定していました。私は何かが恋しいですか?
OnConnected
/をオーバーライドしてから、 is nullOnDisconnected
のセッションを探すと。HttpContext.Current.Session
この時点で、セッションはすでに作成されていると想定していました。私は何かが恋しいですか?
アプリでセッションが有効になっていることを確認してください
HtpContext.Current.Sessionを読むと、確認する必要があるようです
「セッション状態が有効になっていない場合、セッション状態の値を設定または取得することはできません。アプリケーションのセッション状態設定を構成するには、Web.config ファイルで sessionState 要素のモード属性を設定します。セッション状態が有効で、存在しないセッション状態変数から値を要求すると、null が返されます。」
signalR がセッション状態を有効にする必要があると考えている場合は、いいえ [@dfowler によって確認] で別の SO の質問
GetHttpContext を試しましたか?
var ctx = Context.Request.GetHttpContext();
OnConnected / OnDisconnected の Cookie から sessionID を直接取得できます。
public override Task OnConnected() {
var sessionId = Context.RequestCookies["ASP.NET_SessionId"].Value;
}
sessionID 文字列があれば、各セッションの作成時に設定されたカスタム シングルトン ディクショナリからセッションを検索できます。
void Session_Start(object sender, EventArgs e)
{
GlobalSessions[context.Session.SessionID] = context.Session;
}
もちろん、これは Web アプリケーションが単一のサーバー上にある場合にのみ機能します。