wcf返回一个XmlDocument?

时间:2009-06-08 13:16:37

标签: c# xml wcf xmldocument

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

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

[OperationContract]
XmlDocument GetNextLetter();

WCF测试实用程序提供:

  

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

4 个答案:

答案 0 :(得分:13)

将xmlserializer附加到您在业务合同中所做的事情

[OperationContract,XmlSerializerFormat]
XmlDocument GetNextLetter();

这样就可以了!

答案 1 :(得分:10)

如果您使用的是.Net 3.5,那么您可以尝试返回XElement - 这会实现IXmlSerializable,这是使其与DataContractSerializer一起使用所需的缺失成分。

答案 2 :(得分:3)

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

答案 3 :(得分:2)

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

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

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