.net - 如何调试.NET中的反序列化错误?

标签 .net debugging serialization deserialization

.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/

相关文章:

c++ - 如何避免 native 可视化器中的递归?

c++ - Openframeworks,从Arduino读取串口数据

c# - 序列化json时如何忽略JsonProperty(PropertyName = "someName")?

.net - 找不到 mysql .net 更新存储过程

c# - 托管线程一般建议3

c++ - JNI C++ 调试技术?

debugging - 如何调试通过 Windows Scheduler 运行的 exe?

c# - 使用 Netwonsoft 库序列化 JSON 时如何按字母顺序对属性进行排序?

c# - 如何使 switch 语句更面向对象?

c# - C#使用丢弃 '_'