web-dev-qa-db-ja.com

SignalRはサーバーでSessionを使用しません

HUBからHttpContextの現在のセッションにアクセスしようとすると、nullが返されます。

インターフェースIRequiresSessionを利用しようとしましたが、機能しませんでした。誰かが私を助けることができますか?

30

SignalR接続(クライアントのすべてのハブ操作の基礎となる接続を含む)は、セッション状態をサポートしていません。必要に応じて有効にすることもできますが、セッション状態アクセスは特定のクライアントの要求をシリアル化するため、これを無効にすることを強くお勧めします。つまり、一方の要求がもう一方の要求をブロックするため、SignalRデュプレックスメッセージングのメリットは得られなくなります。長いポーリングトランスポートでは、受信接続は送信の試行をブロックします。

44
Damian Edwards

私は次のように隠しフィールドで同じ問題を解決します:

  1. AspxページにASP Hiddenfieldを追加しました。
  2. ページの読み込み時にセッション値を割り当てました(私の場合はボタンクライアントイベントで)
  3. $( "FieldID")。val()を使用して値をSignalRハブに送信しました
0
Pritam

たとえば、メモリキャッシュで使用する、httpはステートレスであるため、サーバーはクライアントを維持するためにセッションが必要ですが、Webソケットは維持接続であり、サーバーはクライアントとの接続を維持します。デフォルトでは、次のようなものは必要ありません。 HttpContextセッション。

0
LIU YUE