2012-05-03 4 views
1

Windows Server AppFabric Clusterに接続するクライアントアプリケーションは2つあります(ノードは1つのみです)。クライアント1 datetimeフィールドを持つオブジェクトをキャッシュに入れます(すべてのエンティティは別のC#クラスライブラリプロジェクトで定義されています)。私がこのオブジェクトをクライアント1で取得すると、すべてがうまく見えますが、クライアント2から同じオブジェクトを取得すると、datetimeフィールドは常に01-01-0001 00:00:00に設定されます。しかし、私は[DataMember]属性でDateTimeフィールドを飾ると問題なく動作します。誰かが何が起こっているか教えてもらえますか?AppFabric Cache - Get with

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

+0

クラス/フィールドを表示できますか? –

答えて

3

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

したがって、型がデータコントラクトなので、そうです。 [DataMember]とする必要があります。それ以外の場合は、すべて0と見なします(DateTime.MinValue、別名01-01-0001 00:00:00)