Как вернуть BSON из контроллера asp.net core 5

Я хочу вернуть BSON из контроллера, чтобы сравнить разницу в производительности с возвратом обычного JSON. Я не могу найти никаких подробностей о том, как сделать это конкретно в asp.net Core 5. Все, что я могу найти, это статьи, в которых говорится об этом в предыдущих версиях ядра .Net, связанных с Mongo или более старыми версиями webapi.

Это Как включить BSON сериализация в моем ASP.NET Core Web API?

и это Как настроить веб-API .Net core принимает двоичный JSON?

скажите, что он недоступен ootb и требует https://github.com/WebApiContrib/WebAPIContrib.Core< /а>.

Этот BSON в веб-API .NET Core 2.0 говорит об аналогичном вещь, но и советует, как ее назвать.

Хотя это более ранние версии .Net Core, я пробовал это в своем проекте asp.net core 5. У меня нет вызова AddMvc, поскольку он не требуется, однако пакет WebAPIContrib делает доступным тот же метод для контроллеров, поэтому в моем методе ConfigureServices у меня есть следующее:

services.AddControllers().AddBsonSerializerFormatters();

Метод тестирования API очень прост:

[HttpGet]
[Route("api/GetList")]
public List<string> GetList()
{
    return new List<string>() { "Item1", "Item2", "Item3", "Item4"};           
}

В вызывающем проекте это прекрасно работает при возврате JSON. Однако, если я добавлю в запрос следующий тип носителя:

request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/bson"));

Затем вызывающий абонент получает 500 внутренних ошибок сервера. Код в серверном методе GetList() выполняется и возвращается, но явно что-то в ядре asp.net не работает для форматирования вывода как BSON.

Что я здесь упускаю или делаю неправильно? Как включить BSON в простом проекте веб-API в .net 5?


person Jason    schedule 24.05.2021    source источник
comment
WebAPIContrib.Core зависит от Newtonsoft.Json, System.Text.Json не поддерживает BSON, а WebAPIContrib.Core зависит от .NET Core 2.1... поэтому он полностью устарел (последнее обновление было в 2019 году) и, вероятно, несовместим с .NET5. Так что вам, вероятно, придется добавить поддержку с нуля. Используйте репозиторий для WebAPIContrib.Core в качестве начала, пока что-то не сломается.   -  person Andy    schedule 24.05.2021
comment
Спасибо @Andy, я посмотрю WebAPIContrib.Core и посмотрю, сколько работы это требует   -  person Jason    schedule 25.05.2021