反序列化对象时出错

时间:2012-08-30 14:58:02

标签: wcf

我有一个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。

任何想法为什么会这样?感谢

4 个答案:

答案 0 :(得分:0)

  

Int32 PhoneNumber

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

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

答案 1 :(得分:0)

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

max int value:2,147,483,647(来源:http://www.dotnetperls.com/int-maxvalue

3,456,787,463&gt; 2147483647

答案 2 :(得分:0)

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

或者,如果是电话号码,您可以随时使用字符串,并根据您的喜好将其格式化

答案 3 :(得分:0)

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