gpt4 book ai didi

c# - SignalR 不序列化自定义类型的枚举值

转载 作者:行者123 更新时间:2023-12-04 11:37:28 26 4
gpt4 key购买 nike

我有一个自托管的 SignalR 服务器将数据传递给 .NET SignalR 客户端。本质上,它正在对自定义类型进行连续或按需更新。当我想触发更新时,我创建一个数据传输对象,将要发送的数据加载到它,然后通过 SignalR 发送它。客户端捕获更新并显示新值(我有一个 WPF 应用程序和一个控制台应用程序,两者基本上都做同样的事情——WPF 应用程序只是做得更“漂亮”一点)。对于我的 DTO 上的大多数属性,一切正常。但是有两个属性是枚举值,无论我在服务器端将其设置为什么,这些属性总是作为枚举的 0 值(在我的情况下为“未知”)出现在客户端。在服务器端,我一直跟踪到

Clients.All.updateData(data);

调用并且 DTO(数据)一直具有正确的枚举值。但是,在客户端从服务器接收调用的函数点处放置一个断点,DTO 的两个枚举都具有不正确的 (0) 值。我在网上搜索了 SignalR 序列化枚举值的任何可能问题,但我没有遇到任何问题。有什么我想念的吗?提前致谢。

丹尼斯

最佳答案

ASP.NET Core 3.x 或更高版本

using System.Text.Json.Serialization;

services.AddSignalR()
.AddJsonProtocol(options =>
{
options.PayloadSerializerOptions.Converters
.Add(new JsonStringEnumConverter());
});
ASP.NET Core 2.2 或更低
using Newtonsoft.Json.Converters;

services.AddSignalR()
.AddJsonProtocol(options =>
{
options.PayloadSerializerSettings.Converters
.Add(new StringEnumConverter());
});
补充阅读: ASP.NET Core SignalR configuration

关于c# - SignalR 不序列化自定义类型的枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38484773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com