web-dev-qa-db-fra.com

SignalR n'utilise pas la session sur le serveur

Lorsque j'essaie d'accéder à la session en cours HttpContext à partir du hub, il renvoie null.

J'ai essayé d'utiliser l'interface IRequiresSession mais cela n'a pas fonctionné. Est-ce que quelqu'un peut m'aider?

30
Danillo Corvalan

Les connexions SignalR (y compris la connexion sous-jacente à toutes les opérations de concentrateur pour un client) ne prennent pas en charge l'état de session. Vous pouvez l'activer si vous le souhaitez, mais nous le déconseillons vivement, car l'accès à l'état de session sérialise les demandes d'un client donné, ce qui signifie que vous n'obtiendrez plus vraiment les avantages de la messagerie duplex SignalR, car une demande bloquera l'autre, par exemple. dans le transport à interrogation longue, la connexion de réception bloquera toute tentative d'envoi.

43
Damian Edwards

Je résous le même problème avec le champ caché comme suit:

  1. Ajouté ASP Hiddenfield sur la page aspx.
  2. assigné la valeur de la session au chargement de la page
  3. envoyé la valeur au hub SignalR en utilisant $ ("FieldID"). val ()
0
Pritam

vous pouvez simplement gérer votre propre session, par exemple, utiliser dans la mémoire cache, http est sans état, ainsi le serveur a besoin d'une session pour gérer les clients, mais le socket Web est une connexion toujours active, le serveur reste connecté aux clients, par défaut, il n'est pas nécessaire Session HttpContext.

0
LIU YUE