Почему при серриализации xml отсутсвует тег версии?
Добрый день.
Внезапно потребовалось чтоб .NET WebAPI сервис возвращал ответы в формате XML.
В принципе проблемы в этом нет, но меня смущает что возвращаемый XML не содержит "тега объявления XML"
т.е. <?xml version="1.0" encoding="UTF-8" ?>
В принципе все данные этого тега конечно включены в заголовки http ответа.... Но с детства считал что xml без этого объявления - не xml
Собственно вопрос. Если мы говорим не о файлах, а именно http ответах, обязательно ли наличие такого "объявления" и не будет ли проблем с совместимостью для разных "клиентов" читающих мои ответы?
И можно ли как-то C# заставить формировать данное объявление не нарушая стандартный механизм webApi?
Я пока нашел способ формировать в методе в поток xml документ-ответ и отправлять его строкой.
Но вот в штатном механизме, ни в XmlMediaTypeFormatter, ни в самой возвращаемой структуре не нашел как это сделать
при инициализации сериалайза декларация формируется, а вот при отправке из контроллера почему-то эта декларация уходит.
теребоньканье мсдном дало понимание что есть некий параметр OmitXmlDeclaration который вообще-то должен быть по дефолту false (т.е. выводить декларацию)
Но почему-то конструкция new XmlMediaTypeFormatter() { UseXmlSerializer = true };
Создает сериалайзер в контроллерах который имеет нестандартное значение и скрывает декларацию xml.
Короче говоря исправление в вебсеттингах при регистрации ContentNegotiationResult для XML, можно принудительно передать OmitXmlDeclaration с нужным значением.