Web API 2.2始终返回JSON内容



下面的简单Action方法总是返回JSON,而不管Accept头设置为application/xml。内容协商对我在同一控制器中的其他操作很有效。

public HttpResponseMessage GetOrder(int id) {
    var orderDescription = mydbc.tbl_job_versions.AsNoTracking().Where(t => t.JobId == id)
      .Select(t => new{Id = t.JobId,  Description = t.Brand + " " + t.Variety + " " + t.Promotion  + " " + t.MarketSegment }).FirstOrDefault ();
    if (orderDescription == null) {
      return new HttpResponseMessage(HttpStatusCode.NotFound);
    }
    else {
      return Request.CreateResponse((HttpStatusCode)200, orderDescription);
    }
 }

是什么原因导致它不执行内容协商,而是始终返回JSON?

您可以在此处查看我的答案:https://stackoverflow.com/a/22918118/1184056

看起来xml格式化程序无法表示它可以写入您提供给它的对象,因此您在json中看不到响应。

发现WEB API内容协商无法处理将匿名类型序列化为XML,只能处理JSON。如果我创建了一个类,那么从LINQ数据填充它,并在请求XML时返回XML。

环顾四周,我在codeplex上发现了这个问题http://aspnetwebstack.codeplex.com/workitem/2123

相关内容

  • 没有找到相关文章

最新更新