【问题标题】:DataContractSerializer - Input String not in correct format errorDataContractSerializer - 输入字符串格式不正确错误
【发布时间】:2016-05-24 02:44:03
【问题描述】:

有没有办法访问错误元素的名称(或在元素的 DataAnnotation 中定义的 DataMember 名称)。在通过 DataContractSerializer 反序列化对象期间,它的值不正确吗?

例如,如果通过反序列化程序运行,以下 DataContract 和 xml 将生成下面发现的错误。 “输入字符串的格式不正确”,因为“IsRequired”元素没有可用的值。

如何从将引发的异常中访问属性名称“Amount”或数据成员名称“Amount”(其中一个我没有大惊小怪),以便我可以报告错误在元素“Amount”上" 这样我创建的错误信息就不是那么“广泛”了

数据合约

<DataContract(NameSpace:="http://tempuri.org/blahblah")>
Public Class [Account]
    ...
    <DataMember(IsRequired:=True, Order:=11, Name:="Amount")> Public [Amount] As Decimal
End Class

要传递的 XML

<Account>
    ...
    <Amount></Amount>
</Account>

序列化过程中报告完整错误

There was an error deserializing the object of type MyProjectName.Account. Input string was not in a correct format.

【问题讨论】:

    标签: .net wcf datacontractserializer


    【解决方案1】:

    检查抛出异常的InnerException(参见Error deserializing the object 示例),或者可能是任一异常的Data property

    【讨论】:

    • 很遗憾,Data字段中没有额外的细节,并且已经通过异常和innerexception的所有可见属性而没有发现它可以使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 2018-04-07
    • 1970-01-01
    相关资源
    最近更新 更多