我正在尝试在aspnet core 2.1项目中配置SignalR。在Startup.cs类的ConfigureServices()方法中,有2个选项可供使用。
services.AddSignalR()
services.AddSignalRCore()
这两种方法有什么区别?
我可以轻松地通过services.AddSignalR()
使用signalR,但是当我将其更改为services.AddSignalRCore()
时,会抛出错误。
答案 0 :(得分:3)
AddSignalR()
调用了比AddSignalRCore()
多两个附加服务,如下所示:
这是AddSignalR()
方法的代码:
public static ISignalRBuilder AddSignalR(this IServiceCollection services, Action<HubOptions> configure)
{
services.Configure(configure);
services.AddSockets();
return services.AddSignalRCore();
}
这是AddSignalRCore()
方法的代码:
public static ISignalRBuilder AddSignalRCore(this IServiceCollection services)
{
services.AddSingleton(typeof(HubLifetimeManager<>), typeof(DefaultHubLifetimeManager<>));
services.AddSingleton(typeof(IHubProtocolResolver), typeof(DefaultHubProtocolResolver));
services.AddSingleton(typeof(IHubContext<>), typeof(HubContext<>));
services.AddSingleton(typeof(HubEndPoint<>), typeof(HubEndPoint<>));
services.AddScoped(typeof(IHubActivator<>), typeof(DefaultHubActivator<>));
services.AddAuthorization();
return new SignalRBuilder(services);
}