.NET的反序列化错误非常普遍,例如这样的事情:
System.ArgumentException: Object of type 'System.Uri' cannot be converted to type 'System.String'.
显然,我们更改了对象中属性的类型,但此序列化对象中有10-15个不同的类,因此,很难弄清楚我们更改了哪个类或哪个提交弄乱了该类。
无论如何,要获取有关实际上导致该错误的哪个类(或至少哪个类)中的哪个属性的信息?是否有任何外部工具或已知方法可以做到这一点?
附言在任何人开始告诉我为什么不应该使用二进制序列化程序或者为什么应该使用X,Y等以实现向后兼容性之前,请保存这些建议。我知道所有这些,但这不是问题。
最佳答案
如果启用调试框架代码的功能(请参阅this链接),然后按ctrl + shift + e并选择所有托管代码异常(exception),则错误将出现在实际的失败的源代码行中。您应该能够使用堆栈跟踪,然后找出它当时试图反序列化的对象的哪一部分。
这并不容易,但这就是我们最终做到的方式。
关于.net - 如何调试.NET中的反序列化错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4886773/