Согласование содержимого: как удалить JSON как поддерживаемый формат? - PullRequest
0 голосов
/ 26 сентября 2018

Я реализую веб-сервис в ASP.NET Core 2.1 на основе спецификации, которая поддерживает исключительно XML.Поэтому процесс согласования содержимого должен вернуть документ XML или ответить с ошибкой.К сожалению, ASP.NET Core 2.1 по умолчанию поддерживает JSON, и по умолчанию процесс согласования содержимого всегда завершается успешно, если запрос сделан с помощью Accept: application / json.

Кто-нибудь знает, возможно ли настроить проект ASP.NET Core таким образом, чтобы процесс согласования содержимого выдавал ошибку, если установлен какой-либо тип носителя, отличный от XML?

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Извините, если я опоздал на вечеринку.Это работает для меня:

        services.AddMvc(options =>
        {
            options.OutputFormatters.RemoveType(typeof(JsonOutputFormatter));
            options.InputFormatters.RemoveType(typeof(JsonInputFormatter));
            options.ReturnHttpNotAcceptable = true;
        })
        .AddXmlSerializerFormatters()
        .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
0 голосов
/ 26 сентября 2018

Используйте MVC форматеры ввода и вывода:

services.AddMvc(configure =>
{
    // remove JSON formatter
    var outputFormatters = configure.OutputFormatters;
    var jsonOutputFormatter = outputFormatters.First(f => f is JsonOutputFormatter);
    outputFormatters.Remove(jsonOutputFormatter);
    var inputFormatters = configure.InputFormatters;
    var jsonInputFormatter = inputFormatters.First(f => f is JsonInputFormatter);
    inputFormatters.Remove(jsonInputFormatter);
}).AddXmlSerializerFormatters()
...