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.
append xmlserializer on what you did in the operational contract
[OperationContract,XmlSerializerFormat]
XmlDocument GetNextLetter();
this will do it !
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With