SignalR 未序列化/反序列化自定义 DataMember 名称

Ale*_*ert 4 c# signalr .net-core asp.net-core asp.net-core-signalr

我正在做一个项目并试图将 SignalR 集成到其中。我有一个带有数据契约的类,它允许我在客户端上使用下划线分隔的格式,在服务器上使用标准的 Pascal Case,如下所示:

[DataContract]
public class Foo {

    [DataMember(Name = "first_name")]
    FirstName { get;set; }

    [DataMember(Name = "last_name")]
    LastName { get;set; }

    [DataMember(Name = "phone")]
    Phone { get;set; }
}
Run Code Online (Sandbox Code Playgroud)

这在通过 fetch 命令将数据传递到 Razor Page OnGet 和 OnPost 方法时工作正常,但在使用 SignalR 时不起作用。

当通过 SignalR 将数据发送到服务器时,first_name并且last_name为空,而phone被正确发送。

如何DataMember在序列化/反序列化时让 SignalR 尊重名称?

Ale*_*ert 7

我能够通过使用该Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson包并在其中添加以下内容来解决此问题Startup.cs

services.AddSignalR()
        .AddNewtonsoftJsonProtocol();
Run Code Online (Sandbox Code Playgroud)