当我写回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);
}
}
答案 0 :(得分:1)
确保您的返回对象可序列化为JSON或XML。否则,控制器方法无法提供根据HTTP状态代码定义所指示的Accept标头可接受的内容:
406不可接受 请求的资源只能根据请求中发送的Accept标头生成不可接受的内容。
由于低代表我无法评论其他信息,您是否可以向我们提供您在回复中尝试返回的对象模型?
答案 1 :(得分:0)
首先,您想通过“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);
}