Я сталкиваюсь с некоторыми трудностями при получении [FormatFilter]
для работы в моем MVC Core 2.1.3 API
Я хочу, чтобы моя конечная точка поддерживала JSON и XML, поэтому я написал этот код:
Startup
класс, который наследуется от StartupCore
класса:
public class Startup : StartupCore
{
protected override void OnConfigure(
IApplicationBuilder app,
IHostingEnvironment env,
ILoggerFactory loggerFactory,
IApplicationLifetime appLifetime) => AutoMappings.Initialize();
}
И (частично) это StartupCore
класс
//....
services
.AddCors()
.AddMvcCore()
.AddApiExplorer()
.AddJsonFormatters()
.AddXmlSerializerFormatters() //With or without this line; no luck
.AddJsonOptions(options =>
{
options.SerializerSettings.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter());
})
.AddMvcOptions(options =>
{
options.InputFormatters.Add(new PlainTextInputFormatter());
options.OutputFormatters.Add(new CsvOutputFormatter());
options.FormatterMappings.SetMediaTypeMappingForFormat("csv", MediaTypeHeaderValue.Parse("text/csv"));
options.OutputFormatters.Add(new XmlSerializerOutputFormatter());
options.FormatterMappings.SetMediaTypeMappingForFormat("xml", MediaTypeHeaderValue.Parse("application/xml"));
})
//.......
Когда я использую атрибут FormatFilter
на моем контроллере, как
[HttpGet]
[FormatFilter]
[Route("/public/feed/{format}")]
public async Task<IActionResult> CreateFeed(string format)
{
//
}
Я получаю сообщение об ошибке: Autofac.Core.Registration.ComponentNotRegisteredException: запрошенная служба 'Microsoft.AspNetCore.Mvc.Formatters.FormatFilter' не была зарегистрирована.
Однако, когда я использую атрибут Produces
, он дает мне данные XML.
[HttpGet]
[Produces("application/xml")]
[Route("/public/feed/{format}")]
public async Task<IActionResult> CreateFeed(string format)
{
//
}
Я мог бы получить две конечные точки; один для JSON и один для XML, но у меня есть одна конечная точка с FormatFilter
.
Так чего мне здесь не хватает?
ВОЗМОЖНОЕ РЕШЕНИЕ : сейчас я использую атрибут Produces
[Produces("application/json", "application/xml"]
Используемый источник: https://andrewlock.net/formatting-response-data-as-xml-or-json-based-on-the-url-in-asp-net-core/