ASP.NET web api返回XML而不是JSON

ASP.NET web api returning XML instead of JSON

本问题已经有最佳答案,请猛点这里访问。

我了解到,默认情况下,Web API将返回JSON数据,但由于某种原因,在创建API时,它返回XML而不是JSON。

1
2
3
4
5
6
7
8
9
10
public class CurrencyController : ApiController
{
    private CompanyDatabaseContext db = new CompanyDatabaseContext();

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

我没有修改任何不寻常的东西,所以我被难住了


如果按如下方式修改webapiconfig,默认情况下会得到json。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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);
    }
}

Web API查找即将到来的请求的头以选择返回的数据类型。例如,如果设置accept:application/json,它将自动将返回类型设置为json。

此外,设置内容类型还为Web API提供了有关即将到来的请求数据类型的线索。所以,如果您想将JSON数据发布到Web API,那么您应该在头文件中有内容类型:application/json。