WCF и XmlSerialization и XmlWriterSettings - PullRequest
       3

WCF и XmlSerialization и XmlWriterSettings

1 голос
/ 01 октября 2011

У меня есть веб-служба REStful WCF (использующая существенно измененный начальный комплект WCF Rest), и контракты на данные представляют собой простые POCO, помеченные [Serializable] и [XmlType] (с элементами, помеченными [XmlElement] или [XmlAttribute], где это необходимо ).

Где-то внутри WCF создается экземпляр XmlSerializer, который генерирует выходные данные без отступов или пробелов между узлами XML, что хорошо для автоматизированных процессов, но усложняет отладку, поскольку мне приходится вручную форматировать вывод XML самостоятельно.

Я хочу использовать XmlWriterSettings, чтобы он автоматически форматировал XML перед отправкой по конвейеру, но я не вижу, где я могу его внедрить.

Я использовал Reflector, чтобы найти, где XmlSerializer создается в WCF, и он обнаруживается в нескольких вложенных внутренних классах isnide XmlSerializerOperationBehavior, но за этим я застрял.

Та!

Ответы [ 2 ]

2 голосов
/ 01 октября 2011

Объект XmlWriterSettings передается не конструктору в XmlSerializer, а в XmlWriter, который затем передается в сериализатор, когда придет время выписать объект.Место, где вы можете изменить это пользовательский кодировщик сообщений (отвечающий за преобразование между XML Infoset в сообщении и фактическими байтами в проводе).Хорошим примером пользовательского кодировщика, который создает экземпляр XmlWriter, является " Custom Text Encoder ".

0 голосов
/ 01 октября 2011

Я думаю, вы можете контролировать весь вывод XMLSerializer, который WCF использует для создания транскрипции сообщения.Советы и примеры приведены в http://msdn.microsoft.com/en-us/magazine/cc163569.aspx.

...