SignalR не использует сессию на сервере - PullRequest
30 голосов
/ 22 октября 2011

Когда я пытаюсь получить доступ к текущему сеансу HttpContext из концентратора, он возвращает null.

Я пытался использовать интерфейс IRequiresSession, но он не работал.Кто-нибудь может мне помочь?

Ответы [ 3 ]

44 голосов
/ 22 октября 2011

Соединения SignalR (включая соединение, лежащее в основе всех операций Hub для клиента) не поддерживают состояние сеанса. Вы можете включить его, если хотите, но мы настоятельно рекомендуем против него, поскольку доступ к состоянию сеанса сериализует запросы для данного клиента, а это означает, что вы больше не получите преимущества от дуплексного обмена сообщениями SignalR, так как один запрос заблокирует другой, например. в транспортном соединении с длинным опросом получающее соединение блокирует любую попытку отправки.

0 голосов
/ 08 июля 2016

Я решаю ту же проблему со скрытым полем следующим образом:

  1. Добавлено ASP Hiddenfield на странице aspx.
  2. присваивает значение сеанса при загрузке страницы (в моем случае это событие клиента кнопки)
  3. отправил значение в SignalR Hub с помощью $ («FieldID»). Val ()
0 голосов
/ 04 мая 2015

вы можете просто поддерживать свой собственный сеанс, например, использовать в кеше памяти, http не имеет состояния, поэтому серверу нужен сеанс для обслуживания клиентов, но веб-сокет является поддерживающим соединение, сервер поддерживает соединение с клиентами, по умолчанию нет необходимости такие вещи, как HttpContext Session.

...