开发者

WCF and XmlSerialization and XmlWriterSettings

开发者 https://www.devze.com 2023-04-10 10:01 出处:网络
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 [XmlEl

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 ou开发者_StackOverflow中文版tput 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!


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".


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消