Веб-API ASP.NET по умолчанию выполняет согласование содержимого - возвращает XML, JSON или другой тип на основе Accept
заголовка. Мне это не нужно / не нужно, есть ли способ (например, атрибут или что-то в этом роде) указать веб-API всегда возвращать JSON?
asp.net-mvc
asp.net-web-api
Борек Бернар
источник
источник
GlobalConfiguration.Configuration.Formatters
Ответы:
Поддержка только JSON в веб-API ASP.NET - ПРАВИЛЬНЫЙ ПУТЬ
Замените IContentNegotiator на JsonContentNegotiator:
Реализация JsonContentNegotiator:
источник
Accept
XML получит JSON, а не 406 ?Accept
заголовка.GlobalConfiguration...Clear()
действительно работает.Очистите все средства форматирования и снова добавьте средство форматирования Json.
РЕДАКТИРОВАТЬ
Я добавил его
Global.asax
внутрьApplication_Start()
.источник
У Филипа В. был правильный ответ, но для ясности и полного рабочего решения отредактируйте файл Global.asax.cs, чтобы он выглядел следующим образом: (Обратите внимание, что мне пришлось добавить ссылку System.Net.Http.Formatting в созданный файл запаса)
источник
Это очищает средство форматирования XML и, таким образом, по умолчанию использует формат JSON.
источник
Вдохновленный отличным ответом Дмитрия Павлова, я немного изменил его, чтобы можно было подключить любой форматтер, который я хотел использовать.
Кредит Дмитрию.
источник
Если вы хотите сделать это только для одного метода,
HttpResponseMessage
вместо этого объявите свой метод как возвращающийIEnumerable<Whatever>
и выполните:этот код неудобен для модульного тестирования, но это также возможно и так:
источник
У этого установлены правильные заголовки. Кажется немного более элегантным.
источник
Вы можете использовать в WebApiConfig.cs:
источник
для тех, кто использует OWIN
становится (в Startup.cs):
источник