【问题标题】:ASP.NET web api returning XML instead of JSON [duplicate]ASP.NET web api返回XML而不是JSON [重复]
【发布时间】:2013-08-18 11:37:43
【问题描述】:

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

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

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

我没有修改任何不寻常的东西,所以我很难过

【问题讨论】:

  • 没关系,我发现它实际上是在返回 JSON,由于某种原因 Chrome 正在将其格式化为 XML >>
  • 可能重复:link

标签: asp.net-mvc asp.net-mvc-4 asp.net-web-api


【解决方案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);
    }
}

【讨论】:

  • 这里的解释是什么?最后两行正在删除 xml 格式化程序?
  • 可爱,如果您想删除 XML 支持(即使明确要求)并希望在所有响应上都这样做,似乎无法找到有关如何仅在一个端点上强制执行它的信息:/
【解决方案2】:

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

除此之外,设置 content-type 为 Web-API 提供了有关即将到来的请求数据类型的线索。因此,如果您想将 JSON 数据发布到 Web API,您应该在标题中包含 Content-Type:application/json

【讨论】:

    猜你喜欢
    • 2012-02-26
    • 2023-04-05
    • 2012-06-20
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多