ASP.NET web api возвращает XML вместо JSON

Я прочитал, что по умолчанию Web API возвращает JSON Data, но по какой-то причине при создании API он возвращает XML вместо JSON.

public class CurrencyController : ApiController
{
    private CompanyDatabaseContext db = new CompanyDatabaseContext();

    // GET api/Currency
    public IEnumerable<Currency> GetCurrencies()
    {
        return db.Currencies.AsEnumerable();
    }
}

Я не модифицировал ничего необычного, поэтому я в тупике

Ответы

Ответ 1

если вы измените свой WebApiConfig, как показано ниже, вы получите JSON по умолчанию.

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
        config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
    }
}

Ответ 2

Web Api ищет заголовки предстоящего запроса для выбора возвращаемого типа данных. Например, если вы установите Принять: приложение /json , он автоматически установит возвращаемый тип в JSON.

Кроме того, настройка типа контента дает ключ к использованию Web-API для типа данных предстоящего запроса. Поэтому, если вы хотите публиковать данные JSON для веб-API, вы должны иметь Content-Type: application/json в заголовке.