Unable to resolve service Server.Circuits.CircuitRegistry

2021-12-28  乐帮网

netcore signalr

有关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(); 方法。

公众号二维码

关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力