Как добавить Json Formatters в MvcCore? - PullRequest
0 голосов
/ 29 мая 2019

Я следую следующему учебнику по реализации IdentityServer4 для API , но не могу вызвать метод от AddJsonFormatters() до services.AddMvcCore(). В настоящее время я настраиваю API из пустого шаблона в ASP.NET Core 3.0.0

Я добавил пакет NuGet Microsoft.AspNetCore.Mvc.Formatters.Json безрезультатно. Кроме того, я понимаю, что использование AddMvc() вместо AddMvcCore() будет частичным решением, но я не могу использовать AddAuthorization() на AddMvc()

//code extracted from the link
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvcCore()
            .AddAuthorization()
            .AddJsonFormatters();
    }
}

Это сообщение об ошибке, которое я вижу выше:

'IMvcCoreBuilder' не содержит определения для 'AddJsonFormatters' и недоступный метод расширения AddJsonFormatters принимает первый аргумент типа 'IMVCoreBuilder' может быть найден (вы используете отсутствующую директиву или ссылка на сборку?)

Это метод? Должен ли я отправить MVCCoreBuilder? Как я могу это сделать? MvcJsonMvcCoreBuilderExtensions.AddJsonFormatters Method

1 Ответ

1 голос
/ 29 мая 2019

Когда вы звоните services.AddMvc(), вы получаете IMvcBuilder.

, если вы хотите добавить больше форматов вывода или ввода, IMvcBuilder имеет метод расширения, который вы можете назвать AddMvcOptions нижеу нас есть пример XmlDataContractSerializerOutputFormatter, который был добавлен

    mvcBuilder.AddMvcOptions(options =>
        {
            options.OutputFormatters.Add(new XmlDataContractSerializerOutputFormatter());
            options.InputFormatters.Add(new XmlDataContractSerializerInputFormatter(options));

Mvc уже имеет JsonOutputFormatter, поэтому внутри AddMvcOptions вы можете получить его, а также добавить свои собственные медиатипы, если вам нужноэто.

var jsonOutputFormatter = options.OutputFormatters.OfType<JsonOutputFormatter>().FirstOrDefault();

        if (jsonOutputFormatter != null)
        {
            jsonOutputFormatter.SupportedMediaTypes.Add(HttpMediaTypes.Vnd+json.all);
            jsonOutputFormatter.SupportedMediaTypes.Add(HttpMediaTypes.ApplicationOctetStream);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...