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工具。