在ASP.NET Web API(4.6.2)中,为什么在Ok
中包装响应不进行内容协商?
例如
Http Request具有以下标头:
Content-Type:application/json and
accept:application/xml
我有两种方法
[HttpGet]
public IHttpactionResult GetData()
{
return Ok(new { FirstName = "foo",LastName = "bar" });
}
[HttpGet]
public Person GetData2()
{
return new Person { FirstName = "foo",LastName = "bar" };
}
第一个方法始终以Json
格式返回响应。它不遵循accept
标头。 Ok
方法的返回类型为OkNegotiatedContentResult
。根据文档
代表执行内容协商的动作结果, 成功后返回HttpStatusCode.OK响应
第二种方法GetData2
返回正确的响应并遵循accept
标头
更新1
看起来Ok
不会与匿名类型进行内容协商。
如果我这样做
return Ok( new Person(){FirstName="foo",LastName="bar"});
有效