Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

wcf return an XmlDocument? [duplicate]

I have a WCF service where Im building up a block of XML using an XmlWriter. Once complete I want to have the WCF return it as an XmlDocument.

But if I have XmlDocument in the [OperationContract] it doesnt work:

[OperationContract]
XmlDocument GetNextLetter();

The WCF test utility gives:

System.Runtime.Serialization.InvalidDataContractException: Type 'System.Xml.XmlDocument' cannot be serialized.

like image 826
Blaze Avatar asked Jun 08 '09 13:06

Blaze


4 Answers

append xmlserializer on what you did in the operational contract

[OperationContract,XmlSerializerFormat]
XmlDocument GetNextLetter();

this will do it !

like image 73
maelo Avatar answered Nov 18 '22 18:11

maelo


If you are using .Net 3.5 then you can try returning XElement instead - this implements IXmlSerializable, which is the missing ingredient needed to make it work with DataContractSerializer.

like image 32
Samuel Jack Avatar answered Nov 18 '22 18:11

Samuel Jack


The DataContractSerializer can serialize XmlElement instances. So just return the DocumentElement property of your XmlDocument instance. See: MSDN.

like image 3
Szymon Rozga Avatar answered Nov 18 '22 16:11

Szymon Rozga


Don't send the XMLDocument, because you can reconstruct it on the other end.

You should probably send down the string that you want, or construct a business object which can be serialized to XML and transmit that.

Have a look at XSD.exe tool with the .net framework if you have an XSD and you want to make a business object from it which can be serialized.

like image 2
Spence Avatar answered Nov 18 '22 18:11

Spence