gpt4 book ai didi

c# - 如何从 .NET Core 3.1 中的 DI 获取 SignalR IHubContext?

转载 作者:行者123 更新时间:2023-12-05 07:02:18 31 4
gpt4 key购买 nike

我有很多集线器并注册它们:

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;
}

我得到一个异常(exception):

System.InvalidOperationException: No service for type'Microsoft.AspNet.SignalR.IHubContext`1[Engy.Plantain.Procurement.Backend.Hubs.FinanceHub]'has been registered.

问题出在哪里?

最佳答案

作为每个人,我敢肯定,认为,这是我的错误。在 API Controller 中,我试图解析 Microsoft.AspNet.SignalR.IHubContext 而不是 Microsoft.AspNetCore.SignalR.IHubContext。现在一切正常。

关于c# - 如何从 .NET Core 3.1 中的 DI 获取 SignalR IHubContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63575108/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com