wcf netdatacontractserializer异常序列化以枚举为键的idictionary
我将NetDataContractSerialiser与WCF一起使用。这在我们所有的类型都被序列化的情况下运行良好。但是,我正在调用的服务正在生成以下异常 格式化程序在尝试反序列化消息时引发异常: 尝试反序列化参数时出错。InnerException消息是“反序列化程序无法加载要反序列化的类型,因为类型”System.Collections.Generic.EnumEqualityComparer`1[[Grafted.Common.DomainModel.Code.Enums.enumFundingParameterContextKey,Grafted.Common.DomainModel.Code,Version=14.0.71.0,Culture=neutral,PublicKeyToken=null]]在程序集“mscorlib,版本=2.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089”中找不到“”。 检查正在序列化的类型是否与正在反序列化的类型具有相同的约定,并且是否使用了相同的程序集。“。有关更多详细信息,请参阅InnerException 正在序列化的类的属性定义为wcf netdatacontractserializer异常序列化以枚举为键的idictionary,wcf,enumeration,netdatacontractserializer,Wcf,Enumeration,Netdatacontractserializer,我将NetDataContractSerialiser与WCF一起使用。这在我们所有的类型都被序列化的情况下运行良好。但是,我正在调用的服务正在生成以下异常 格式化程序在尝试反序列化消息时引发异常: 尝试反序列化参数时出错。InnerException消息是“反序列化程序无法加载要反序列化的类型,因为类型”System.Collections.Generic.EnumEqualityComparer`1[[Grafted.Common.DomainModel.Code.Enums.enumFun
public IDictionary<enumFundingParameterContextKey, string> Context { get; set; }
这是在另一个假设中定义的
当我用int替换枚举时,类反序列化没有问题。你知道为什么使用枚举会导致异常吗
使用NetDataContractSerializer的原因是为了使类型信息可用,并避免使用KnownType尝试用
[DataContract]
而不是[Serializable]
标记枚举。但客户端上的枚举类型似乎完全未知。将枚举的基类型设置为非整数。e、 g.一个字节
例如:
[Serializable] public enum enumFundingParameterContextKey : byte
{
[EnumMemberAttribute()]
ClientId = 0,
[EnumMemberAttribute()]
EntitlementDefinitionId = 1
}
详细信息见我的以下博文:很遗憾,改用DataContract后运气不佳。还验证了客户端上的正确程序集。
[Serializable] public enum enumFundingParameterContextKey : byte
{
[EnumMemberAttribute()]
ClientId = 0,
[EnumMemberAttribute()]
EntitlementDefinitionId = 1
}