Как настроить используемый по умолчанию XmlSerializer в. net core api - PullRequest
1 голос
/ 25 февраля 2020

Кто-нибудь знает, как настроить сериализатор XML, который добавляется при использовании IMVCBuilder в Startup up класса. net core api project. В частности, когда вы используете это:

services.AddMvc()
    .AddJsonOptions(options =>
    {
        options.SerializerSettings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.IsoDateFormat; // UTC (ISO 8601) format for dates
        options.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
    })
    .AddXmlSerializerFormatters()
    .AddXmlDataContractSerializerFormatters()

Я пытался использовать метод расширения AddXmlOptions, но нет свойств MvcXmlOptions Class (кроме AllowRfc7807CompliantProblemDetailsFormat)

Спецификация c настройка, которую я пытаюсь настроить, это опустить объявление xml в элементе root. Здесь есть множество ответов, которые касаются этого, но все они связаны с созданием нового XmlSerializer. Мне нужна настройка для применения сериализатора по умолчанию, используемого контроллером, когда заголовок Accept установлен на application/xml

Ответы [ 2 ]

2 голосов
/ 26 февраля 2020

Вы можете перейти к XmlWriterSettings, используемому форматером вывода, используя что-то вроде следующего:

services.Configure<MvcOptions>(options =>
{
    var xmlWriterSettings = options.OutputFormatters
        .OfType<XmlSerializerOutputFormatter>()
        .Single()
        .WriterSettings;

    xmlWriterSettings.OmitXmlDeclaration = true;
});

Вызов AddXmlSerializerFormatters добавляет экземпляр XmlSerializerOutputFormatter. Приведенный выше код находит этот конкретный экземпляр и соответственно изменяет его настройки.

0 голосов
/ 25 февраля 2020

Попробуйте это:

services.Configure<MvcXmlOptions>(options =>
{
    //set options here
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...