我有两个客户端应用程序连接到Windows Server AppFabric群集(只有一个节点)。客户端1将具有日期时间字段的对象放入缓存(所有实体都在不同的C#类库项目中定义)。当我通过客户端1 获取此对象时,一切看起来都不错,但是当我通过客户端2检索同一个对象时,我将datetime字段设置为01-01-0001 00:00:00 all时间。但是,如果我用 [DataMember] 属性装饰DateTime字段,它可以正常工作。有人可以告诉我发生了什么事吗?
更新:Client1是WCF服务,而Client 2是ASP.NET应用程序。使用的框架是4.0。
答案 0 :(得分:3)
AppFabric序列化类型(使用NetDataContractSerializer
)。如果该类型使用[DataContract]
修饰,则只会标记标有[DataMember]
的成员。如果类型未使用[DataContract]
进行修饰,则IIRC默认为BinaryFormatter
行为,即序列化字段 - 在这种情况下,它可能需要[Serializable]
,也可能不需要[DataMember]
。
所以:听起来这种类型是数据合同所以是的;您需要将其标记为DateTime.MinValue
- 否则它将采用全零值({{1}},也就是01-01-0001 00:00:00)