Serialization 如何使DataContractSerializer更安全?

Serialization 如何使DataContractSerializer更安全?,serialization,datacontractserializer,Serialization,Datacontractserializer,我最近遇到了一个场景,我们的一个开发人员在数据契约中添加了一个未标记为数据成员的对象。我们使用DataContractSerializer来存储我们所控制的硬件的配置文件。显然,序列化操作没有成功 这发现的主要问题是配置文件在过程中被破坏。有人知道在尝试序列化对象图之前,如何确保对象图将被序列化吗 序列化异常的堆栈跟踪在调用XmlObjectSerializerContext时失败。CheckIfTypeSerializable(..)我想知道在尝试序列化之前是否可以使用类似的东西 我想避免将图

我最近遇到了一个场景,我们的一个开发人员在数据契约中添加了一个未标记为数据成员的对象。我们使用DataContractSerializer来存储我们所控制的硬件的配置文件。显然,序列化操作没有成功

这发现的主要问题是配置文件在过程中被破坏。有人知道在尝试序列化对象图之前,如何确保对象图将被序列化吗

序列化异常的堆栈跟踪在调用XmlObjectSerializerContext时失败。CheckIfTypeSerializable(..)我想知道在尝试序列化之前是否可以使用类似的东西

我想避免将图形流式传输到内存,然后再传输到文件,但我想这会起作用


有什么建议吗?

斯科特,我想你的意思是序列化成功了,但是*反*序列化没有成功。如果您添加了一个额外的数据成员,但忘记了annonate,那么序列化程序将在序列化过程中忽略它。此外,如果它在反序列化过程中看到一个额外的成员,如果您要求严格的模式有效性或要求该成员存在,它将抛出;但否则,它将无法解析该值并继续前进

有几种方法可以解决这个问题——使用IEExtensibleDataObject、需要DataMembers、使用代理等。有关更具体的指导,请参阅[数据协定版本控制]和[向前兼容的数据协定]


希望这有帮助

是序列化没有成功。应用程序试图保存配置文件的更新。此操作失败,但不是在损坏磁盘上的文件之前。