Web API 2.2 总是 returns JSON 内容
Web API 2.2 always returns JSON content
我下面的简单操作方法总是 returns JSON,无论 Accept
header 设置为 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);
}
}
可能是什么原因导致它不执行内容协商,而是总是 return JSON?
你可以在这里查看我的回答:
看起来 xml 格式化程序无法说它可以写入您提供给它的对象,因此您在 json 中看不到响应。
发现 WEB API 内容协商无法处理将匿名类型序列化为 XML,只能处理 JSON。如果我创建一个 class,从 LINQ 数据填充它,然后 return 它在请求 XML.
时得到 XML
再四处查看,我在 codeplex http://aspnetwebstack.codeplex.com/workitem/2123
上发现了问题
我下面的简单操作方法总是 returns JSON,无论 Accept
header 设置为 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);
}
}
可能是什么原因导致它不执行内容协商,而是总是 return JSON?
你可以在这里查看我的回答:
看起来 xml 格式化程序无法说它可以写入您提供给它的对象,因此您在 json 中看不到响应。
发现 WEB API 内容协商无法处理将匿名类型序列化为 XML,只能处理 JSON。如果我创建一个 class,从 LINQ 数据填充它,然后 return 它在请求 XML.
时得到 XML再四处查看,我在 codeplex http://aspnetwebstack.codeplex.com/workitem/2123
上发现了问题