我正在開發一個簡單的 .NET 6 應用程式,以在我們的前端應用程式中啟用資料更新通知。我之前在 .NET 5 中構建過類似的東西,但我遇到了一個讓我難過的 DI 問題。在 5 中,所有自動映射的集線器都有一個 IHubContext,該 IHubContext 也在容器中為它們設定。在 6 中似乎不再是這種情況。
System.InvalidOperationException:嘗試激活“SignalRNotifications.Controllers.NotificationController”時,無法決議“Microsoft.AspNet.SignalR.IHubContext`1[SignalRNotifications.Hubs.NotificationHub]”型別的服務。
6 中的新非啟動 DI 對我來說看起來很奇怪,但我只是沒有看到任何可用的說明如何修復它。關于如何讓 IHubContext 注入我的控制器的任何建議?
謝謝!
更新:這是一些相關的代碼:
using Microsoft.AspNetCore.Builder;
using SignalRNotifications.Hubs;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
builder.Services.AddSignalR().AddAzureSignalR();
var app = builder.Build();
// Configure the HTTP request pipeline.
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<NotificationHub>("/NotificationHub");
});
app.Run();
依賴注入在控制器中以最可預測的方式完成:
namespace SignalRNotifications.Controllers
{
[AllowAnonymous]
[Route("api/[controller]")]
[ApiController]
public class NotificationController : ControllerBase
{
private readonly IHubContext<NotificationHub> _notificationContext;
public NotificationController(IHubContext<NotificationHub> notificationContext)
{
_notificationContext = notificationContext;
}
uj5u.com熱心網友回復:
System.InvalidOperationException:嘗試激活“SignalRNotifications.Controllers.NotificationController”時,無法決議“Microsoft.AspNet.SignalR.IHubContext`1[SignalRNotifications.Hubs.NotificationHub]”型別的服務。
該問題可能與您安裝了錯誤版本的 SignalR 并添加了錯誤的命名空間參考有關。您正在使用Microsoft.AspNet.SignalR.IHubContext, 而不是Microsoft.AspNetCore.SignalR.IHubContext.
根據您的代碼并參考
因此,請檢查您的代碼并嘗試使用:
using Microsoft.AspNetCore.SignalR;
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/446538.html
標籤:asp.net 核心 依赖注入 .net-6.0 asp.net-core-signalr
