【发布时间】:2011-02-03 13:36:32
【问题描述】:
.NET 的 Deserilization 错误非常普遍,例如:
System.ArgumentException: 对象 类型“System.Uri”无法转换 输入“System.String”。
很明显,我们更改了对象中属性的类型,但在这个序列化对象中大约有 10-15 个不同的类,因此很难弄清楚我们更改了哪一个或哪个提交搞砸了。
是否有任何关于哪个类(或至少在哪个类)中的哪个属性实际导致此错误的信息?是否有任何外部工具或已知方法可以做到这一点?
附注在有人开始告诉我为什么我不应该使用二进制序列化程序或为什么我应该使用 X、Y 等以实现向后兼容性之前,请保存这些建议。我知道所有这些,但这不是问题。
【问题讨论】:
-
如果您没有更多信息,您是否看到 InnerException?
-
10-15 对于调试而言听起来并不是一个很大的数字;我不知道一个简单的方法来调试那个副手
-
@Marc Gravell:我认为@dr。 evil 意味着被反序列化的实例引用了 10-15 个其他不同的类,所有这些(包括根)都可以具有不确定的
N属性(即使只有一个类,您也有N属性),因此可能会涉及大量属性。 -
@casperOne 是的,我痛苦地意识到尝试定位序列化错误的乐趣;p
-
@DesignFirst InnerException 是
Nothing
标签: .net debugging serialization deserialization