wcf返回一个XmlDocument?

我有一个WCF服务,我使用XmlWriter构建一个XML块。 一旦完成,我想让WCF将其作为XmlDocument返回。

但如果我在[OperationContract]中有XmlDocument它不起作用:

[OperationContract] XmlDocument GetNextLetter(); 

WCF测试实用程序提供:

System.Runtime.Serialization.InvalidDataContractException:无法序列化类型’System.Xml.XmlDocument’。

如果你使用.Net 3.5,那么你可以尝试返回XElement – 这实现了IXmlSerializable ,这是使它与DataContractSerializer一起工作所需的缺失成分。

在操作合同中添加xmlserializer

 [OperationContract,XmlSerializerFormat] XmlDocument GetNextLetter(); 

这样做会!

DataContractSerializer可以序列化XmlElement实例。 因此,只需返回XmlDocument实例的DocumentElement属性。 请参阅: MSDN 。

不要发送XMLDocument,因为您可以在另一端重新构建它。

您应该发送您想要的字符串,或构建一个可以序列化为XML并传输它的业务对象。

如果您有一个XSD,并且想要从中生成一个可以序列化的业务对象,请查看带有.net框架的XSD.exe工具。