代码之家  ›  专栏  ›  技术社区  ›  Slicc

升级到.NET Core 2.1,现在我无法序列化声明

  •  1
  • Slicc  · 技术社区  · 6 年前

    我目前在两个Azure Micro服务之间发送索赔(system.security.claims.claim type)。当我在.NET Core 2.0上时,它运行得很好。服务结构通信层按预期序列化和反序列化。当我升级到.NET Core 2.1时,我现在得到错误:

    System.Runtime.Serialization.InvalidDataContractException:无法序列化“类型”System.Security.Claims.Claim。考虑使用datacontractattribute属性标记它,并使用datamemberattribute属性标记要序列化的所有成员。或者,您可以确保该类型是公共的,并且有一个无参数的构造函数-然后将序列化该类型的所有公共成员,并且不需要任何属性。”

    1 回复  |  直到 6 年前
        1
  •  1
  •   masnider    6 年前

    我看到你用一个单独的索赔类型来回答这个问题。不确定.NET声明类型发生了什么变化,但它必须有。 https://fuget.org/packages/System.Security.Claims/4.3.0/lib/netstandard1.3/diff/4.0.1/ 没有立即显示任何东西,可能需要真正地重新组装东西才能看到区别。

    您还可以通过拥有一个可以控制的自定义序列化程序来解决这个问题,这是一种更为宽容的方法。这对于您自己的类型尤其有效,因为您可以显式地控制流程。

    详情如下: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-services-reliable-collections-serialization#custom-serialization