如何解决如何从.NET Core 3.1中的DI获取SignalR IHubContext?
我有很多集线器并注册它们:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapHub<FinanceHub>("/hub/finance");
endpoints.MapHub<PartnersHub>("/hub/partners");
...
endpoints.MapHub<WarehousesHub>("/hub/warehouses");
endpoints.MapControllerRoute("default","{controller}/{action}/{id?}");
});
我注册了SignalR:
services.AddSignalR(options =>
{
options.EnableDetailedErrors = true;
options.MaximumReceiveMessageSize = signalrMaxMessageLimit * 8192;
}).AddMessagePackProtocol(conf =>
{
conf.FormatterResolvers.Clear();
conf.FormatterResolvers.Add(CircularResolver.Instance);
});
它们充当SignalR集线器。但是当我尝试在Microsoft.AspNetCore.Mvc.ControllerBase中解决它们时:
private IHubContext<FinanceHub> financeHub => provider.GetRequiredService<IHubContext<FinanceHub>>();
public PaymentRegisterController(
ILogger<ServiceController> logger,IServiceProvider _provider) : base(logger)
{
provider = _provider;
}
我得到一个例外:
System.InvalidOperationException:没有类型的服务 'Microsoft.AspNet.SignalR.IHubContext`1 [Engy.Plantain.Procurement.Backend.Hubs.FinanceHub]' 已注册。
问题出在哪里?
解决方法
作为eveyone,我敢肯定,这是我的错误。在API控制器中,我试图解析 Microsoft.AspNet.SignalR.IHubContext ,而不是 Microsoft.AspNetCore.SignalR.IHubContext 。 现在一切正常。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。