5

我有一个 WCF 服务,我在其中使用 XmlWriter 构建一个 XML 块。完成后,我希望 WCF 将其作为 XmlDocument 返回。

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

[OperationContract]
XmlDocument GetNextLetter();

WCF 测试实用程序提供:

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

4

4 回答 4

14

将 xmlserializer 附加到您在操作合同中所做的事情上

[OperationContract,XmlSerializerFormat]
XmlDocument GetNextLetter();

这会做到的!

于 2012-06-04T12:54:36.980 回答
10

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

于 2009-06-08T13:21:43.310 回答
3

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

于 2009-06-08T13:26:01.617 回答
2

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

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

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

于 2009-06-08T13:19:14.190 回答