使用 SignalR 创建 Windows Forms .Net Core 应用程序
Creating Windows Forms .Net Core app with SignalR
我已经使用 SignalR .Net 客户端创建了一个 Windows Forms .Net Core 应用程序。我按照这篇文章 https://docs.microsoft.com/en-us/aspnet/core/signalr/dotnet-client?view=aspnetcore-5.0&tabs=visual-studio 添加包并连接到服务器。当服务器不为 serialization\deserialization 使用 NewtonsoftJson 时,一切正常。一旦我启用 NewtonsoftJson serialization\deserialization(serialization\deserialization 在服务器上 100% 正确工作,我可以使用写在 JavaScript 上的客户端进行测试),服务器上的属性与 JsonProperty 如下所示
[JsonProperty(PropertyName = "EDT")]
public List<UpdateEDT> EDTs { get; set; }
始终设置为 null,因为我怀疑 SignalR Core 客户端库不会使用 NewtonsoftJson 序列化 类。我尝试安装 Microsoft.AspNetCore.Mvc.NewtonsoftJson 和 Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson nuget 包并尝试添加 AddNewtonsoftJsonProtocol() 如下
connection = new HubConnectionBuilder()
.WithUrl("https://xxxxx/chat?access_token=" + token)
.AddNewtonsoftJsonProtocol()
.WithAutomaticReconnect()
.Build();
但是找不到 AddNewtonsoftJsonProtocol()。我的问题是如何配置 SignalR .Net Core 客户端库以使用 Newtonsoft 进行序列化和反序列化?谢谢
事实证明我做的一切都是正确的,但是错过了一个 using 语句:
using Microsoft.Extensions.DependencyInjection;
我已经使用 SignalR .Net 客户端创建了一个 Windows Forms .Net Core 应用程序。我按照这篇文章 https://docs.microsoft.com/en-us/aspnet/core/signalr/dotnet-client?view=aspnetcore-5.0&tabs=visual-studio 添加包并连接到服务器。当服务器不为 serialization\deserialization 使用 NewtonsoftJson 时,一切正常。一旦我启用 NewtonsoftJson serialization\deserialization(serialization\deserialization 在服务器上 100% 正确工作,我可以使用写在 JavaScript 上的客户端进行测试),服务器上的属性与 JsonProperty 如下所示
[JsonProperty(PropertyName = "EDT")]
public List<UpdateEDT> EDTs { get; set; }
始终设置为 null,因为我怀疑 SignalR Core 客户端库不会使用 NewtonsoftJson 序列化 类。我尝试安装 Microsoft.AspNetCore.Mvc.NewtonsoftJson 和 Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson nuget 包并尝试添加 AddNewtonsoftJsonProtocol() 如下
connection = new HubConnectionBuilder()
.WithUrl("https://xxxxx/chat?access_token=" + token)
.AddNewtonsoftJsonProtocol()
.WithAutomaticReconnect()
.Build();
但是找不到 AddNewtonsoftJsonProtocol()。我的问题是如何配置 SignalR .Net Core 客户端库以使用 Newtonsoft 进行序列化和反序列化?谢谢
事实证明我做的一切都是正确的,但是错过了一个 using 语句:
using Microsoft.Extensions.DependencyInjection;