【问题标题】:Blazor WebAssembly;.net core SignalR Client;Throw InvalidOperationException When Invoke HubConnectionBuilder.Builder()Blazor WebAssembly;.net core SignalR Client;调用 HubConnectionBuilder.Builder() 时抛出 InvalidOperationException
【发布时间】:2023-12-28 20:18:01
【问题描述】:

Copy code from this page

blazor 项目(.net 标准 2.1)

  1. Microsoft.AspNetCore.Components.WebAssembly 3.2.1

  2. Microsoft.AspNetCore.Components.WebAssembly.Build 3.2.1

  3. Microsoft.AspNetCore.Components.WebAssembly.DevServer 3.2.1

  4. Microsoft.AspNetCore.Http.Connections.Client 3.1.6

  5. Microsoft.AspNetCore.SignalR.Client 3.1.6

  6. Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson 3.1.6

  7. System.Net.Http.Json 3.2.1

@code{
  private HubConnection HC;
  protected override async Task OnInitializedAsync(){
    HC = new HubConnectionBuilder().WithUrl("http://localhost:4000/class").Build();
    HC.On<string>("TextMessage", Message => Console.WriteLine(Message));
    await HC.StartAsync();
    await base.OnInitializedAsync();
  }
}

登录 chrome 控制台:

asp.net core 服务器:(.net core 3.1)

 public class Startup {
     public Startup(IConfiguration configuration) {
          Configuration = configuration;
     }

     public IConfiguration Configuration { get; }
     public void ConfigureServices(IServiceCollection services){
         services.AddSingleton<ClassHub>();
         services.AddSignalR(o => {
             o.MaximumReceiveMessageSize = null;
             o.EnableDetailedErrors = true;
         });
     }
     public void Configure(IApplicationBuilder app, IWebHostEnvironment env){
         app.UseEndpoints(endpoints => {
             endpoints.MapHub<ClassHub>("/class", options => {
                 options.TransportMaxBufferSize = 256000;
                 options.ApplicationMaxBufferSize = 256000;
             });
         });
     }
 }

【问题讨论】:

  • 日志顶部:System.InvalidOperationException:找不到类型“Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionFactory”的合适构造函数。确保类型是具体的,并且为公共构造函数的所有参数注册了服务。
  • 我在不修改任何代码的情况下修复了这个问题,首先删除所有引用和剃须刀文件,不包括 web 程序集、http.json 、主布局和索引页面;然后将它们添加回来排除 Microssoft.AspNetCore.Http.Connections.Client 因为我不需要类 HttpConnectionFactory;问题已解决,但不知道为什么。
  • 我也有同样的问题。它发生过一次,但在重新加载页面后它起作用了,所以我认为这只是一些随机错误,但是,在第二次发布后,问题再次出现但并没有消失......到目前为止没有好的解决方案。
  • @ZoyuJ - 如何在没有 Microsoft.AspNetCore.Http.Connections.Client 包的情况下添加 SignalR?它是 SignalR 的依赖项

标签: c# asp.net-core signalr blazor-client-side


【解决方案1】:

我有同样的错误。我在聊天中心使用 Blazor WebAssembly 和 ASP Api Rest。当我运行 Blazor 应用程序时,它崩溃了。我挣扎了很久,还在谷歌上搜索。

但是我只安装了 Nuget 就修复了它。确保已安装 Microsoft.AspNetCore.Http.Connections.Client Nuget。刚刚安装为 Nuget,就是这样。

【讨论】: