首页 > 解决方案 > 如何注册强类型 SignalR Core 集线器?

问题描述

我有一个 ASP.Net Core 3.1 Web 应用程序,我正在尝试将强类型集线器注入控制器,如下所示:

public class MyController : ControllerBase
{
    private readonly IHubContext<MyHub, IMyHub> hubContext;

    public MyController(IHubContext<MyHub, IMyHub> hubContext)
    {
        this.hubContext = hubContext;
    }    
}

Autofac 已经设置好了,但我仍然没有找到注入集线器的方法。(版本或类 SignalR 有一个RegisterHubs扩展方法。

我尝试了以下方法:

        builder.RegisterAssemblyTypes()
            .Where(t => typeof(IHubContext<>).IsAssignableFrom(t))
            .ExternallyOwned();

和这个:

       builder.RegisterAssemblyTypes()
            .Where(t => t.Name.EndsWith("Hub"))
            .As(typeof(Hub<>))
            .ExternallyOwned();

但它没有用。

新的方法是什么?

标签: c#asp.net-coreautofacasp.net-core-signalr

解决方案


尝试使用AsClosedTypesOf(Hub<>)而不仅仅是As(Hub<>). 请参阅此处的文档。


推荐阅读