Я хочу вернуть 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?
WebAPIContrib.Core
зависит отNewtonsoft.Json
,System.Text.Json
не поддерживает BSON, аWebAPIContrib.Core
зависит от .NET Core 2.1... поэтому он полностью устарел (последнее обновление было в 2019 году) и, вероятно, несовместим с .NET5. Так что вам, вероятно, придется добавить поддержку с нуля. Используйте репозиторий дляWebAPIContrib.Core
в качестве начала, пока что-то не сломается. - person Andy   schedule 24.05.2021