wcf return an XmlDocument? [duplicate]
-
12-09-2019 - |
Question
This question already has an answer here:
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.
Solution
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.
OTHER TIPS
append xmlserializer on what you did in the operational contract
[OperationContract,XmlSerializerFormat]
XmlDocument GetNextLetter();
this will do it !
The DataContractSerializer can serialize XmlElement instances. So just return the DocumentElement property of your XmlDocument instance. See: MSDN.
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.