如何使DataContractSerializer更安全?

时间:2010-02-04 16:52:11

标签: serialization datacontractserializer

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

发现的主要问题是配置文件在此过程中被破坏。有没有人知道在尝试序列化之前确保对象图将序列化的方法?

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

我想避免将图形流式传输到内存然后再存档,但我想这会有用......

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

斯科特,我认为你的意思是序列化成功,但* de *序列化没有成功。如果您添加了一个额外的数据成员但忘记了annonate,序列化程序将在序列化期间忽略它。此外,如果它在反序列化期间看到一个额外的成员,如果您要求严格的模式有效性或要求该成员在场,它将抛出;但除此之外,它根本不会解析该值并继续前进。

有几种方法可以解决这个问题 - 使用IExtensibleDataObject,需要DataMembers,使用代理等。请参阅http://msdn.microsoft.com/en-us/library/ms731138.aspx [数据合同版本控制]和http://msdn.microsoft.com/en-us/library/ms731083.aspx [前向兼容数据合同]了解更多信息具体指导。

希望这有帮助!

相关问题