IHTTPActionResult Ok<T>(T Content) gives HTTP/1.1 406

本文关键字:gives HTTP Ok lt gt IHTTPActionResult Content | 更新日期: 2023-09-27 18:19:06

当我写返回OK()然后它给我201 HTTPStatusCde。然而,当我试图得到一个响应对象作为回报,它给了我406错误。这里var response是我的自定义模式,我想要一个响应

public IHttpActionResult Post(Order order)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }
        try
        {
            var response = this._orderRepository.AddReturnOrder(order);
            if (response != null)
                return Ok(response);
            return NotFound();
        }
        catch(Exception ex)
        {
            return InternalServerError(ex);
        }       
    }

IHTTPActionResult Ok<T>(T Content) gives HTTP/1.1 406

确保返回的对象可序列化为JSON或XML。否则,控制器方法将无法提供根据HTTP状态码定义所指示的Accept标头可接受的内容:

406不可接受被请求的资源只能根据请求中发送的Accept标头生成不可接受的内容。

由于rep低,我无法评论其他信息,您能给我们您试图在响应中返回的对象模型吗?

首先,您希望通过"var response"返回什么?请注意,对于OData协议,POST请求返回"201 Created"或"204 no content"。如果响应代码是201,则响应体必须包含创建的资源。OData Web API中POST的标准方式是:

    // POST odata/Foos
    public IHttpActionResult Post(Foo foo)
    {
        if(!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }
        FakeData.Instance.Foos.Add(foo);
        return Created(foo);
    }