为什么我的 HubConnectionBuilder 无法在 HubConnectionBuilder().Build 上运行?

You*_*Dad 5 c# json http signalr

我正在尝试学习如何使用 C# 客户端连接到 SignalR 服务器。我不确定我正在执行的步骤是否被认为是好的(可行)。当然,因为我遇到了错误......

我正在尝试建立与该网站的连接:

        var connection = new HubConnectionBuilder()
            .WithUrl(new Uri("http://localhost:5100/appsHub"))
            .WithAutomaticReconnect()
            .Build();
Run Code Online (Sandbox Code Playgroud)

一旦我运行这个,我就会得到以下内容。我不太确定问题是什么,但这是因为链接?或者我应该默认使用不同的项目?

Inner Exception 1:
FileLoadException: Could not load file or assembly 'System.Text.Encodings.Web, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The located assembly's manifest definition does not match the assembly reference. (0x80131040)
Run Code Online (Sandbox Code Playgroud)

然后我想将 id 作为 JSON 对象发送到 URL。

我已经尝试让它工作一周了,是的,我不知道该怎么做:(。

任何帮助,将不胜感激。

问候,

Den*_*nis 5

小心教程。通常他们使用最新的软件包版本。例如,ASP.NET Core SignalR .NET 客户端可以执行此操作:

Install-Package Microsoft.AspNetCore.SignalR.Client
Run Code Online (Sandbox Code Playgroud)

如果最新的包版本与您的项目的框架版本相同,那么这种方法就可以正常工作。但是,如果您的项目针对另一个框架版本,那么您将收到像您发布的错误。

目前 VS2019 中控制台应用程序的默认目标框架是netcoreapp3.1.
最新Microsoft.AspNetCore.SignalR.Client要求net5.0.

要么将目标框架更改为net5.0您的控制台应用程序,要么使用Microsoft.AspNetCore.SignalR.Clientv3.1.x(3.1.10 是最新的兼容版本netcoreapp3.1)。


在我看来,这个包版本控制非常烦人。

我们有大约 300 个项目,我们的 LTS 版本将使用netcoreapp3.1到其生命周期结束。如果现在打开 VS 中的 LTS 版本源和 Nuget 选项卡,他会看到很多“可用”包更新。但由于框架版本不兼容,这些更新无法应用。这些垃圾隐藏了许多第三方包的重要更新,这些第三方包针对netstandard但不属于 .NET Core/.NET。

结果,浪费了大量时间来监视第三方软件包的更新。