1

我有两个客户端应用程序连接到 Windows Server AppFabric 集群(只有一个节点)。客户端 1 将具有日期时间字段的对象放入缓存(所有实体都在不同的 C# 类库项目中定义)。当我通过客户端 1获取此对象时,一切看起来都很好,但是当我通过客户端 2 检索相同的对象时,我将日期时间字段设置为 01-01-0001 00:00:00。但是,如果我用[DataMember]属性装饰 DateTime 字段,它就可以正常工作。有人可以告诉我发生了什么吗?

更新:Client1 是 WCF 服务,Client 2 是 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 回答