我目前在两个Azure微服务之间发送声明(System.Security.Claims.Claim类型)。当我在.net Core 2.0上时这很好用。服务结构通信层按预期序列化和反序列化。当我升级到.net core 2.1时,我现在收到错误:
System.Runtime.Serialization.InvalidDataContractException:'Type'System.Security.Claims.Claim'无法序列化。请考虑使用DataContractAttribute属性对其进行标记,并使用DataMemberAttribute属性标记要序列化的所有成员。或者,您可以确保该类型是公共的并且具有无参数构造函数 - 然后将序列化该类型的所有公共成员,并且不需要任何属性。'
答案 0 :(得分:1)
我看到你通过单独的声明类型回答了这个问题。不确定.NET声明类型有什么变化,但必须有。 https://fuget.org/packages/System.Security.Claims/4.3.0/lib/netstandard1.3/diff/4.0.1/没有立即显示任何东西,可能必须真正地拆卸东西才能看出差异。
你也可以通过拥有一个你可以控制的自定义序列化器来解决这个问题,哪个更宽松。这对您自己的类型特别有效,因为您可以明确地控制该过程。