ASPNET Core 2.1中AddSignalR和AddSignalRCore扩展方法之间的区别

时间:2018-12-31 08:46:55

标签: asp.net-core signalr asp.net-core-2.1

我正在尝试在aspnet core 2.1项目中配置SignalR。在Startup.cs类的ConfigureServices()方法中,有2个选项可供使用。

services.AddSignalR()
services.AddSignalRCore()

这两种方法有什么区别?

我可以轻松地通过services.AddSignalR()使用signalR,但是当我将其更改为services.AddSignalRCore()时,会抛出错误。

1 个答案:

答案 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);
}