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

PhoneNumber有益な入力としてa を使用するのでString、プログラムで集中的な計算を行う必要はありません。

于 2012-08-30T15:07:07.053 に答える
0

Int32 PhoneNumber

それは完全に間違っています。
電話番号は数字ではなく文字列です。

この特定のエラーは、ほとんどの電話番号が 32 ビットに収まらないために発生しています。
ただし、文字列を使用する必要があります。

于 2012-08-30T15:00:14.747 に答える
0

その 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 に答える