Подтвердить что ты не робот

Как установить сериализатор по умолчанию в ASP.NET Web API?

Сейчас я просматриваю видео-курс об ASP.NET Web API. Когда контроллер вызывается, данные возвращаются в JSON с помощью по умолчанию. Мне просто интересно, потому что, когда я копирую этот образец проекта из видео, я получаю XML.

Фрустрация большая, пожалуйста, помогите мне решить эту проблему.

Я новичок в ASP.NET Web API, поэтому, пожалуйста, несите меня.

UPDATE

Контроллер не содержит специального кода. Это простой код, который генерируется с помощью API-контроллера с пустым шаблоном чтения/записи.

4b9b3361

Ответ 1

ASP.NET WebAPI поставляется со встроенным контентом контента, поэтому формат возвращаемого значения определяется самим запросом - более конкретно с помощью Accept/Заголовки Content-Type (в зависимости от того, какие из них присутствуют, заголовок Accept кажется предпочтительным для Content-Type).

Я предполагаю, что вы просматриваете результаты в браузере и по умолчанию, возможно, запрашиваете application/xml. Вам нужно будет поиграть с некоторыми настройками/инструментами разработчика в браузере и заставить его отправить Content-Type: application/json, чтобы получить правильный ответ (при условии, что вы вернетесь HttpResponseMessage),

Ответ 2

в Global.asax: добавьте строку:

GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();

Это будет выглядеть так.

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();

    RegisterGlobalFilters(GlobalFilters.Filters);
    RegisterRoutes(RouteTable.Routes);

    BundleTable.Bundles.RegisterTemplateBundles();
    GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
}

Ответ 3

Джеймс близок, но согласование содержимого фактически использует заголовок [Accept],  not [Content-Type]

Как и почти все остальное в MVC, вы можете переопределить компоненты согласования контента, чтобы обеспечить возврат содержимого желания

W3c четко заявляет -

14.1 Принять

Поле заголовка запроса принятия можно использовать для указания определенных типов носителей, приемлемых для ответа.

-and-

14.17 Content-Type

Поле заголовка объекта-типа Content-Type указывает тип носителя тела объекта, отправленного получателю, или, в случае метода HEAD, тип носителя, который был отправлен, имел бы запрос GET.

Эта страница заголовки очень полезна для понимания согласования запроса/ответа.