首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过使用GetHttpContext方法,SignalR集线器的Context属性未提供Http上下文

通过使用GetHttpContext方法,SignalR集线器的Context属性未提供Http上下文
EN

Stack Overflow用户
提问于 2019-07-09 11:27:38
回答 2查看 476关注 0票数 0

在我的应用程序中,我计划使用SignalR,以便后端代码根据服务器上出现的情况向登录的用户发送消息。特别是,我希望SignalR在后端发生任何事情时都能调用JS客户端上的方法。这可能是在后端发生的周期性计算,突然超过阈值,我需要在JS客户端上为特定用户调用一些东西。特定的用户是这里的关键元素。只有应该知道这一点的用户。我假设这对于SignalR来说应该是非常简单的,但我在理解实现这一点的方法时遇到了一些问题。我的解决方案如下;

  • 每次用户登录时,我都会创建一个SignalR组并将该用户添加到该组中。
  • 每次用户注销时,我都会将其从组中删除。(我不知道我是否还可以删除组本身)
  • 现在,每当在后端发生什么事情时,我都会使用SignalR将信息推送给需要了解该事件的特定用户,方法是调用JS客户端方法并将信息发送给名称等于感兴趣用户的名称标识符的组。

因此,要应用此解决方案,我需要获取有关刚刚在C#集线器内登录的用户的信息,以便创建组并加入他。

现在我的问题是,如何从登录到C#集线器中的应用程序的用户那里访问所需的信息。当然,我对用户名标识符感兴趣。我一直在想,Hub中的Context属性应该给我所需的信息(这是我对MS Docs的理解),但我不能让它工作。请研究下面的代码。

// As soon as a User logs in, below method fires. I try to get the information 
// in here but no success        

public override async Task OnConnectedAsync()
{
      var CID = Context.ConnectionId;   // this gives a unique connection ID
      var user = Context.User; // This returns nothing
      var userID = Context.UserIdentifier; // This returns nothing
      var httpContextObject = Context.GetHttpContext(); // This returns nothing
      await base.OnConnectedAsync();
}

当我从JS调用Context Hub中的其他方法时,该方法将被激发并传递信息,但我仍然无法访问C#属性应提供的信息。

请首先帮助我确认或更正我的整体方法,以及是否有众所周知的最佳实践。其次,请让我知道如何获得上下文属性在Hub中提供的信息,以及这些信息通常在哪里可用,以及如何访问和使用它们。

在此之前,非常感谢您。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56944923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档