C# 如何在.NET Core中使用IUserIdProvider?
介绍如何使用IUserIdProvider接口。它显示了如何使用GlobalHost使SignalR使用您的用户ID提供程序。但是.Net核心的信号器没有GlobalHost。替换内容是什么?在.Net core中,您拥有注入DI的服务C# 如何在.NET Core中使用IUserIdProvider?,c#,asp.net-core,signalr,signalr-hub,C#,Asp.net Core,Signalr,Signalr Hub,介绍如何使用IUserIdProvider接口。它显示了如何使用GlobalHost使SignalR使用您的用户ID提供程序。但是.Net核心的信号器没有GlobalHost。替换内容是什么?在.Net core中,您拥有注入DI的服务Microsoft.AspNet.signar.Infrastructure.IConnectionManager,您可以从中获取上下文 例如,要获取连接管理器,请使用: using Microsoft.AspNet.SignalR; using Microsof
Microsoft.AspNet.signar.Infrastructure.IConnectionManager
,您可以从中获取上下文
例如,要获取连接管理器,请使用:
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Infrastructure;
using Microsoft.AspNet.Mvc;
public class TestController : Controller
{
private IHubContext testHub;
public TestController(IConnectionManager connectionManager)
{
//get connection manager using HubContext
testHub = connectionManager.GetHubContext<TestHub>();
}
}
使用Microsoft.AspNet.signal;
使用Microsoft.AspNet.signal.Infrastructure;
使用Microsoft.AspNet.Mvc;
公共类TestController:控制器
{
私有IHubContext测试中心;
公共测试控制器(IConnectionManager连接管理器)
{
//使用HubContext获取连接管理器
testHub=connectionManager.GetHubContext();
}
}
您甚至可以在中间件中获取上下文:
app.Use(next => (context) =>
{
var hubContext = (IHubContext<MyHub>)context
.RequestServices
.GetServices<IHubContext<MyHub>>();
//...
});
app.Use(下一步=>(上下文)=>
{
var hubContext=(IHubContext)context
.RequestServices
.GetServices();
//...
});
您可以阅读更多内容。您需要实施
然后您需要在启动
中注册它以进行依赖项注入:
public void ConfigureServices(IServiceCollection services)
{
services.AddSignalR();
services.AddSingleton<IUserIdProvider, MyCustomProvider>();
}
public void配置服务(IServiceCollection服务)
{
services.AddSignalR();
services.AddSingleton();
}
然后,
signal
将在类似的活动中使用您的UserIdProvider
,非常感谢。我一直在寻找的是services.AddSingleton。它起作用了
public void ConfigureServices(IServiceCollection services)
{
services.AddSignalR();
services.AddSingleton<IUserIdProvider, MyCustomProvider>();
}