0

我有 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

4 回答 4

0

Int32 PhoneNumber

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

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

于 2012-08-30T15:00:14.747 回答
0

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

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

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

于 2012-08-30T15:00:50.280 回答
0

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

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

于 2012-08-30T15:02:33.297 回答
0

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

于 2012-08-30T15:07:07.053 回答