我有一个REStful WCF Web服务(使用经过大幅修改的WCF Rest Starter Kit),数据契约是标有[Serializable]和[XmlType]的简单POCO(成员用[XmlElement]或[XmlAttribute]标记) )。
在WCF内部的某个地方创建了一个XmlSerializer实例,它生成XML节点之间没有缩进或间距的输出,这对于自动化进程来说很好,但是由于我必须自己手动格式化XML输出,因此调试更加困难。
我想使用XmlWriterSettings,因此它会在将XML发送到管道之前自动格式化XML,但我无法看到我可以在哪里注入它。
我使用Reflector来查找在WCF中实例化XmlSerializer的位置,并且它显示在几个嵌套的内部类中,不在XmlSerializerOperationBehavior中,但除此之外,我被卡住了。
的Ta!
答案 0 :(得分:2)
XmlWriterSettings
对象不会传递给XmlSerializer
的构造函数,而是传递给XmlWriter
,然后在将对象写出时将其传递给序列化程序。您可以更改的位置是自定义消息编码器(负责在消息中的XML Infoset和线路中的实际字节之间进行转换)。创建XmlWriter
实例的自定义编码器的一个很好的示例是“Custom Text Encoder”。
答案 1 :(得分:0)
我认为您可以控制WCF用于创建邮件转录的完整XMLSerializer输出。提示和示例在http://msdn.microsoft.com/en-us/magazine/cc163569.aspx中给出。