在WCF DataContract属性是必需的吗?
我有一个类没有使用DataContract标记类或使用DataMember标记属性 .
当我在4服务器上部署wcf服务时,4服务在3服务器上工作正常,在1服务器上失败,消息“类型'类'无法序列化 . 请考虑使用DataContractAttribute属性标记它,并标记要序列化的所有成员使用DataMemberAttribute属性 . “
那么在web.config或machine.config中还是在IIS中我可以命令在代码中使用序列化器?要么
如果没有指定属性,我可以指定使用默认序列化程序吗?
谢谢,克里希纳
3 回答
不,不需要DataContractAttribute - WCF将推断序列化规则 . 我唯一能想到检查的是.NET的版本在所有服务器上是相同的 .
更多信息:WCF Data Contract / Serialization
正如MSDN所述
您必须使用
DataContract
和DataMember
属性来装饰您的类,以便在WCF服务中使用 .是的,将在WCF服务和任何客户端之间发送的所有类上需要
[DataContract]
属性 .该类的所有可能包含要发送的数据的属性都需要使用
[DataMember]
属性进行标记 . 这使得可以定义包含可序列化和非序列化数据的类 - 但我不推荐它 .请注意,您只能序列化数据成员,例如
public
字段或属性,但您无法序列化方法 . 因此,我的建议是使用普通类,除了包含要在服务和客户端之间传递的数据作为数据 Contract 之外什么都不做 .