【问题标题】:Error deserializing the object反序列化对象时出错
【发布时间】:2012-08-30 14:58:02
【问题描述】:

我有 WCF 服务。它具有以下属性。

[DataMember]
public List<uttAppointmentPhoneList> AppointmentPhoneList { get; set; }

public class uttAppointmentPhoneList
{
    string _PhoneType;
    Int32 _PhoneNumber;
    bool _IsDelete;

    [DataMember]
    public string PhoneType
    {
        get { return _PhoneType; }
        set { _PhoneType = value; }
    }

    [DataMember]
    public Int32 PhoneNumber
    {
        get { return _PhoneNumber; }
        set { _PhoneNumber = value; }
    }

    [DataMember]
    public bool IsDelete
    {
        get { return _IsDelete; }
        set { _IsDelete = value; }
    }

}

但是当我发送请求时出现以下错误。

格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数时出错。 InnerException 消息是“反序列化 MarshfieldClinic.Denbigh.AppointmentService.Sync.DataContracts.mydayapp 类型的对象时出错。无法将值“3456787463”解析为类型“Int32”。有关详细信息,请参阅 InnerException。

任何想法为什么会发生这种情况?谢谢

【问题讨论】:

    标签: wcf


    【解决方案1】:

    Int32 PhoneNumber

    这是完全错误的。
    电话号码是字符串,而不是数字。

    发生此特定错误是因为大多数电话号码不适合 32 位。
    但是,您需要使用字符串。

    【讨论】:

      【解决方案2】:

      那个 int 大于最大 int 值。使用字符串作为电话号码。

      最大 int 值:2,147,483,647(来源:http://www.dotnetperls.com/int-maxvalue

      3,456,787,463 > 2,147,483,647

      【讨论】:

        【解决方案3】:

        对于您正在处理的值 (3456787463),Int32 似乎太小了。 试试 long 看看它是否有效。

        或者如果它是电话号码,您可以随时使用字符串并在以后根据自己的喜好对其进行格式化

        【讨论】:

          【解决方案4】:

          使用PhoneNumber 作为信息输入,因此使用String 并且您不需要在程序中进行任何密集计算

          【讨论】:

            猜你喜欢
            • 2019-01-08
            • 1970-01-01
            • 2011-07-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-10-14
            相关资源
            最近更新 更多