我明白为什么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(您的用户连接字符串).
原文地址:https://www.jb51.cc/aspnet/250410.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。