1

クライアントとサーバーの両方に次の列挙型があります。

enum AddressType
{
    fax,
    ...
    email,
    voice
}

メソッドが呼び出されると、属性として AddressType を持つオブジェクトを返し、明示的にそれをAddressType.voice

ただし、クライアントでは、受信したオブジェクトはAddressType.fax代わりに...

奇妙なのは、他のすべてが正常に見え、他の列挙型が正常に戻ったことです。

私が確認したところ、クライアントとサーバーの両方がまったく同じ列挙型定義を持ち、同じ順序と xml 名前空間を持っています。この値を変更する間に何もありません。

Webサービス自体は別のモックアップであり、クライアントは大量のものを実行するレガシーアプリケーションであるため、Webサービスインターフェイスを変更できません。

ここで何が起こっているのかについてのアイデアはありますか?

ありがとう。

4

1 に答える 1

0

どの Web サービス フレームワークを使用していますか (WCF、ASPX など)。使用しているシリアライザーによっては、プロパティを明示的にシリアライズ可能としてマークする必要がある場合があります。

たとえば、デフォルトを使用すると、シリアル化するすべてのプロパティまたはフィールドに属性DataContractSerializerを配置する必要があります。DataMemberデフォルトでゼロ値になっているため、フィールドがシリアル化されていないようです。これをテストするには、列挙型の各メンバーに割り当てられた値を変更するか、それらを再配置して自動的に割り当てられた値を変更するか、定義で各列挙型メンバーの値を明示的に指定します。値が常に 0 で表される値として返される場合 (プロパティ セッターなどの他のすべてが機能していると仮定すると)、プロパティはシリアル化されていません。

于 2013-06-04T19:20:19.190 に答える