有关ASP.NET Blazor升级.Net 5 到.Net 6时遇到以下错误:(携带SignalR框架)

System.InvalidOperationException
  HResult=0x80131509
  Message=Unable to resolve service for type 'Microsoft.AspNetCore.Components.Server.Circuits.CircuitRegistry' while attempting to activate 'Microsoft.AspNetCore.Components.Server.CircuitDisconnectMiddleware'.
  Source=Microsoft.AspNetCore.Http.Abstractions
  StackTrace:
   在 Microsoft.Extensions.Internal.ActivatorUtilities.ConstructorMatcher.CreateInstance(IServiceProvider provider)
   在 Microsoft.Extensions.Internal.ActivatorUtilities.CreateInstance(IServiceProvider provider, Type instanceType, Object[] parameters)
   在 Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass5_0.<UseMiddleware>b__0(RequestDelegate next)
   在 Microsoft.AspNetCore.Builder.ApplicationBuilder.Build()
   在 Microsoft.AspNetCore.Builder.ComponentEndpointRouteBuilderExtensions.MapBlazorHub(IEndpointRouteBuilder endpoints, String path, Action`1 configureOptions)
   在 Microsoft.AspNetCore.Builder.ComponentEndpointRouteBuilderExtensions.MapBlazorHub(IEndpointRouteBuilder endpoints, String path)
   在 Microsoft.AspNetCore.Builder.ComponentEndpointRouteBuilderExtensions.MapBlazorHub(IEndpointRouteBuilder endpoints)
   在 Program.<Main>$(String[] args) 在 D:\Demo\BlazorApp1\BlazorApp1\Server\Program.cs 中: 第 31 行

error image

这个很是闹心,在仔细查看地了官方文档后做出总结如下 :
https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/signalr-blazor?view=aspnetcore-6.0&tabs=visual-studio&pivots=server
之前的 services.AddSignalR();确实不再适用了。需要通过以下方式启用SignalR。

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseWebAssemblyDebugging();
}
else
{
    app.UseExceptionHandler("/Error");
}

app.UseBlazorFrameworkFiles();
app.UseStaticFiles();

app.UseRouting();


app.MapRazorPages();
app.MapControllers();
app.MapBlazorHub();
app.MapHub<SignalHub>("/signalhub");

看到了吗?只需要添加两行:
app.MapBlazorHub();
app.MapHub<SignalHub>("/signalhub");
其中MapHub还是和之前一样是一个监听终结点。不要再使用 services.AddSignalR(); 方法。