我在集群模式中使用akka.net。(n)处理节点,目前有1个灯塔。
其中一个通过网络导航的包暴露了语言信息。
/// <summary>
/// Define scored a suite of token info
/// </summary>
/// <seealso cref="Hammer.Immutable.ImmutableObject" />
[DataContract]
public sealed class TokenSuite : ImmutableObject, IIdItem
{
#region Ctor
/// <summary>
/// Initializes a new instance of the <see cref="TokenSuite"/> class.
/// </summary>
public TokenSuite(Guid id, string langCode)
: base(id, langCode)
{
this.Id = id;
this.LangCode = langCode;
if (!string.IsNullOrEmpty(langCode))
LangInfo = CultureInfo.GetCultureInfoByIetfLanguageTag(langCode);
}
#endregion
#region Properties
/// <summary>
/// Gets the identifier.
/// </summary>
[DataMember]
public Guid Id { get; }
/// <summary>
/// Gets the main language code.
/// </summary>
[DataMember]
public string LangCode { get; }
/// <summary>
/// Gets the lang information.
/// </summary>
[IgnoreDataMember]
public CultureInfo LangInfo { get; }
#endregion
在本地没有问题,但当它通过网络(序列化)时,我在灯塔上遇到了这个问题:
读取错误时,它似乎来自CultureInfo对象,但它是序列化中要忽略的标志。
我使用Akka版本1.3.5,Hyperion 0.9.8,Akka.Serialization.Hyperion 1.3.2-beta54。
我尝试在本地进行序列化,它可以工作:
var serializer = Context.System.Serialization.FindSerializerForType(typeof(TokenSuite));
var data = serializer.ToBinary(result);
var rtoObjectBack = serializer.FromBinary<TokenSuite>(data);
有什么想法吗?
发布于 2018-03-06 18:25:38
Hyperion不使用任何数据协定属性。这也意味着[IgnoreDataMember]
不会被考虑在内。
可能在尝试反序列化您提供的CultureInfo
对象时失败。您可以始终尝试将其转换为字符串,并在反序列化后解析。
https://stackoverflow.com/questions/49128437
复制相似问题