27

SignalR がHttpContext へのアクセスを許可しない理由を理解しています。しかし、これは私たちにとって非常に問題です。説明させてください:

このアプリケーションは、ユーザーがログイン時に環境を選択するマルチテナント アプリケーションです。これにより、基本的に HttpSession に ConnectionStringName が登録されます。SignalR Hub では、上のデータベースにアクセスする必要がありますDisconnect。しかし、この時点では HttpContext がなく、書き込み先の環境を特定できないため、これは不可能です。

この問題を解決する方法を提案してくれる人はいますか? これには少し行き詰まっています。

編集:ソリューションが負荷分散環境で機能する場合のボーナスポイント。

4

5 に答える 5

0

ソリューションが負荷分散された環境で動作する必要があるという事実は、接続文字列をセッションとは別のものに保存する必要があるという事実を強制します。キーが ConnectionId (切断時に利用可能な唯一の情報) であり、値が接続文字列であるキー値ストア (実装方法は関係ありません)。必要に応じて他の場所で Session を使い続けることができますが、少なくともその情報については、アプリケーション全体をそこから読み書きできるように移動する必要があると思います。

于 2012-09-21T10:35:55.023 に答える
0

Dictionary のようなものを使用して、接続時にユーザーの ConnectionId を追跡できます。また、SQL Server を使用してセッション状態を保存することも役立つ場合があります: http://support.microsoft.com/kb/317604

SignalR は、disoconnect() がいつ起動されたかを追跡するために使用できる User.Identity.Name へのアクセスを提供します。

于 2012-09-18T08:34:50.110 に答える