加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – SignalR和HttpContext / Session

发布时间:2020-12-15 23:28:10 所属栏目:asp.Net 来源:网络整理
导读:我明白为什么SignalR不给你 access to the HttpContext.但是,这对我们来说是很麻烦的.让我解释: 我们的应用程序是用户在登录时选择环境的多租户应用程序,它基本上在HttpSession中注册了ConnectionStringName.在我们的SignalR Hub中,我们需要在Disconnect上
我明白为什么SignalR不给你 access to the HttpContext.但是,这对我们来说是很麻烦的.让我解释:

我们的应用程序是用户在登录时选择环境的多租户应用程序,它基本上在HttpSession中注册了ConnectionStringName.在我们的SignalR Hub中,我们需要在Disconnect上访问数据库.但这是不可能的,因为我们现在没有HttpContext,无法确定要写入的环境.

任何人都可以提供一个建议如何解决这个问题?我们有点困在这个.

编辑:如果您的解决方案在负载平衡环境中工作,则为积分.

解决方法

这是一个古老的问题,但我正在离开我的答案,以防万一有助于任何人.

由于您的中心扩展了Microsoft.AspNet.SignalR.Hub,因此可以访问HubCallerContext类型的Context属性

此属性暴露了来自呼叫者的大量信息:

> ConnectionId
>标题
> QueryString
>请求
>饼干
>用户

在我的解决方案中,我使用存储在Context.User.Identity.Name中的用户名作为我的键/值存储(Redis在我的情况)中的键,以跟踪用户拥有的所有连接.

您可以覆盖OnConnnect和OnDisconnect来维护与用户关联的连接列表.您还可以存储任何您想要的连接ID(您的用户连接字符串).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读