1

Windows Server AppFabricクラスターに接続している2つのクライアントアプリケーションがあります(ノードは1つだけです)。クライアント1日時フィールドを持つオブジェクトをキャッシュに配置します(すべてのエンティティは別のC#クラスライブラリプロジェクトで定義されています)。クライアント1を介してこのオブジェクトを取得すると、すべてが正常に見えますが、クライアント2を介して同じオブジェクトを取得すると、datetimeフィールドが常に01-01-00010:00:00に設定されます。ただし、DateTimeフィールドを[DataMember]属性で装飾すると、正常に機能します。誰かが何が起こっているのか教えてもらえますか?

更新:Client1はWCFサービスであり、Client2はASP.NETアプリケーションです。使用されるフレームワークは4.0です。

4

1 に答える 1

3

AppFabric は型をシリアル化します ( を使用NetDataContractSerializer)。その型が で装飾されている場合、 で[DataContract]マークされたメンバーのみ[DataMember]がシリアル化されます。型が で装飾されていない場合、[DataContract]IIRC はデフォルトでBinaryFormatter動作します。つまり、フィールドをシリアル化します[Serializable]。この場合、必要な場合とそうでない場合があります。

つまり、型がデータ コントラクトのように聞こえるので、そうです。マークする必要があります[DataMember]-そうしないと、すべてゼロの値が想定されます(DateTime.MinValue別名01-01-0001 00:00:00)

于 2012-05-03T08:49:27.617 に答える