C# 从信号器集线器内的自定义类访问Identity UserManager
我有一个C# 从信号器集线器内的自定义类访问Identity UserManager,c#,asp.net,signalr,C#,Asp.net,Signalr,我有一个ChatUser类,我正试图从信号器集线器中初始化该类。此类的属性之一是自定义标识ApplicationUser对象。当我实例化一个ChatUser实例时,我还填充了这个ApplicationUser属性,这样我就可以在我的应用程序中访问有关该用户的信息,如下所示: public ChatUser(int userId) { ApplicationUser u = UserManager.FindById(userId); this.Use
ChatUser
类,我正试图从信号器集线器中初始化该类。此类的属性之一是自定义标识ApplicationUser
对象。当我实例化一个ChatUser
实例时,我还填充了这个ApplicationUser
属性,这样我就可以在我的应用程序中访问有关该用户的信息,如下所示:
public ChatUser(int userId)
{
ApplicationUser u = UserManager.FindById(userId);
this.User = u;
}
但是,我无法使UserManager
对象在此类中正确实例化
在SignalR之外(例如,在普通控制器中),我通常会使用以下代码实例化UserManager
:
private ApplicationUserManager _userManager;
private ApplicationUserManager UserManager
{
get
{
if (_userManager == null)
{
_userManager = HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
if ((_userManager == null) || (_userManager.IsDisposed == true))
{
_userManager = new ApplicationUserManager(new CustomUserStore(new ApplicationDbContext()));
}
return _userManager;
}
set
{
_userManager = value;
}
}
这在轮毂内工作正常。我试图找到如何使这个上下文
对象在我的自定义类中可用,但无法确定正确的过程。我尝试了此处给出的从中心外部访问中心的指导:
IHubContext ChatHubContext=GlobalHost.ConnectionManager.GetHubContext();
但是,这不是正确的“上下文”,因为它给出了一个IHubContext
对象,该对象只具有组
和客户端
的属性
是否可以访问适当的上下文对象来公开
请求.GetHttpContext…
方法?如果您在.NET core上,可以使用此
_userManager = Context.Request.GetHttpContext().GetOwinContext().GetUserManager<ApplicationUserManager>();
IHubContext ChatHubContext = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();