Reputation: 155135
I have a REStful WCF web service (using a substantially modified WCF Rest Starter Kit) and the data contracts are simple POCOs marked with [Serializable] and [XmlType] (with members tagged with [XmlElement] or [XmlAttribute] where appropriate).
Somewhere inside WCF an instance of XmlSerializer is created which generates the output with no indentation or spacing between XML nodes, which is fine for automated processes, but makes debugging harder as I have to manually format the XML output myself.
I want to use XmlWriterSettings so it will automatically format the XML before it gets sent down the pipe, but I can't see where I could inject it.
I used Reflector to find where XmlSerializer is instantiated within WCF and it shows up inside a few nested internal classes isnide XmlSerializerOperationBehavior, but beyond that I'm stuck.
Ta!
Upvotes: 1
Views: 473
Reputation: 87228
The XmlWriterSettings
object isn't passed to the constructor to the XmlSerializer
, but to the XmlWriter
which will be then passed to the serializer when it's time to write the object out. The place where you can change that is a custom message encoder (responsible for converting between the XML Infoset in the message and the actual bytes in the wire). One good sample of a custom encoder which creates a XmlWriter
instance is the "Custom Text Encoder".
Upvotes: 2
Reputation: 8400
I think you can control the complete XMLSerializer output that WCF uses to create the message transcription. Hints and examples are given in http://msdn.microsoft.com/en-us/magazine/cc163569.aspx.
Upvotes: 0