c# - 如何注册强类型 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();
但它没有用。
新的方法是什么?
解决方案
尝试使用AsClosedTypesOf(Hub<>)
而不仅仅是As(Hub<>)
. 请参阅此处的文档。
推荐阅读
- vue.js - Chart js - Vue-ChartJs - 选项和刻度不适用于 xAxis
- javascript - 单击 Plotly 散点图中的数据点时打开 URL [Python]
- sharepoint - 如何有效地使用数千个项目填充共享点在线列表?
- sql - SQL Server 复杂联接
- javascript - 当我们从一页更改为另一页时,库存率不显示
- uistackview - 改变水平 UIStackview 中的列宽
- php - MYSQL delete 语句删除了太多行
- kubernetes - Istio mtls 配置错误导致行为不一致
- python - Django Form - 根据外键值过滤列表
- powershell - 如何在跳过正在使用的 VHD 时自动复制 VHD?