31

当我尝试HttpContext从 HUB 访问当前会话时,它会返回null.

我尝试使用该界面IRequiresSession,但没有用。有人能帮我吗?

4

3 回答 3

46

SignalR 连接(包括客户端所有 Hub 操作的基础连接)不支持会话状态。如果您愿意,您可以启用它,但我们强烈建议您不要启用它,因为会话状态访问会序列化给定客户端的请求,这意味着您将不再真正从 SignalR 双工消息传递中受益,因为一个请求会阻塞另一个请求,例如在长轮询传输中,接收连接将阻止任何发送尝试。

于 2011-10-21T20:11:42.117 回答
0

你可以简单地维护自己的会话,例如在内存缓存中使用,http是无状态的,所以服务器需要会话来维护客户端,但是web socket是保持连接的,服务器与客户端保持连接,默认情况下不需要像这样的东西HttpContext 会话。

于 2015-05-04T09:08:58.440 回答
0

我用隐藏字段解决了同样的问题,如下所示:

  1. 在 aspx 页面上添加了 ASP Hiddenfield。
  2. 在页面加载时分配会话值(在我的情况下是按钮客户端事件)
  3. 使用 $("FieldID").val() 将值发送到 SignalR Hub
于 2016-07-08T07:38:45.353 回答