SignalR n'utilise pas de Session sur le serveur

quand j'essaie d'accéder au HttpContext la session courante du HUB retourne null.

j'ai essayé d'utiliser l'interface IRequiresSession mais ça ne fonctionne pas. Quelqu'un peut-il m'aider?

30
demandé sur Markus 2011-10-22 00:01:24

3 réponses

les connexions SignalR (y compris la connexion sous-jacente à toutes les opérations du Hub pour un client) ne prennent pas en charge l'état de Session. Vous pouvez l'activer si vous le souhaitez, mais nous vous recommandons fortement de ne pas l'activer car session state access sérialise les requêtes pour un client donné, ce qui signifie que vous n'obtiendrez plus vraiment l'avantage de la messagerie duplex SignalR, car une requête bloquera l'autre, par exemple dans le transport long polling, la connexion de réception bloquera toute tentative d'envoi.

43
répondu Damian Edwards 2013-05-04 17:59:37

vous pouvez simplement maintenir votre propre session, par exemple, l'utilisation dans la mémoire cache,http est apatride,donc le serveur a besoin de session pour maintenir les clients, mais la socket web est la connexion qui reste vivante, le serveur reste connecté avec les clients, par défaut pas besoin de telles choses comme la Session HttpContext.

0
répondu LIU YUE 2015-05-04 09:08:58

Je résous le même problème avec hidden field comme suit:

  1. ajout D'ASP Hiddenfield sur la page aspx.
  2. assigné la valeur de session au chargement de la page (dans mon cas sur le bouton d'événements client)
  3. envoyé la valeur au Hub SignalR en utilisant $("FieldID").val()
0
répondu Pritam 2016-07-08 07:38:45