WCF和XmlSerialization以及XmlWriterSettings

时间:2011-09-30 21:02:31

标签: wcf xml-serialization

我有一个REStful WCF Web服务(使用经过大幅修改的WCF Rest Starter Kit),数据契约是标有[Serializable]和[XmlType]的简单POCO(成员用[XmlElement]或[XmlAttribute]标记) )。

在WCF内部的某个地方创建了一个XmlSerializer实例,它生成XML节点之间没有缩进或间距的输出,这对于自动化进程来说很好,但是由于我必须自己手动格式化XML输出,因此调试更加困难。

我想使用XmlWriterSettings,因此它会在将XML发送到管道之前自动格式化XML,但我无法看到我可以在哪里注入它。

我使用Reflector来查找在WCF中实例化XmlSerializer的位置,并且它显示在几个嵌套的内部类中,不在XmlSerializerOperationBehavior中,但除此之外,我被卡住了。

的Ta!

2 个答案:

答案 0 :(得分:2)

XmlWriterSettings对象不会传递给XmlSerializer的构造函数,而是传递给XmlWriter,然后在将对象写出时将其传递给序列化程序。您可以更改的位置是自定义消息编码器(负责在消息中的XML Infoset和线路中的实际字节之间进行转换)。创建XmlWriter实例的自定义编码器的一个很好的示例是“Custom Text Encoder”。

答案 1 :(得分:0)

我认为您可以控制WCF用于创建邮件转录的完整XMLSerializer输出。提示和示例在http://msdn.microsoft.com/en-us/magazine/cc163569.aspx中给出。