返回OkNegotiatedContentResult不会进行内容协商

在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"}); 

有效

xiangmuwei 回答:返回OkNegotiatedContentResult不会进行内容协商

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3114232.html

大家都在问