ASP.NET Web Api HttpPost任务返回204而不是201

时间:2012-11-13 22:44:09

标签: asp.net asp.net-mvc asp.net-web-api

我正在使用ASP.NET Web Api,其中一个方法是作为POST操作公开的。它工作正常,但它返回的HTTP结果为204而不是201。这是方法定义:

[HttpPost][ActionName("Save")]
public Task SaveGameState(Guid instanceId, [FromBody] ComparisonGameState state)
{
    return gameInstancesClient.SaveGameState(instanceId, state);
}

它是否正在返回一个让Web Api混乱的任务?

我可以做以下事情,但似乎有点矫枉过正:

[HttpPost][ActionName("Save")]
public async Task<HttpResponseMessage> SaveGameState(Guid instanceId, [FromBody] ComparisonGameState state)
{
    await gameInstancesClient.SaveGameState(instanceId, state);
    return new HttpResponseMessage { StatusCode = System.Net.HttpStatusCode.Created };
}

谢谢!

2 个答案:

答案 0 :(得分:0)

尝试将操作定义中的任务类型更改为HttpResponseMessage的任务。在内部,WebAPI将非通用任务视为返回void,因此它会返回204.如果您的任务返回HttpResponseMessage,请确保将返回类型更改为HttpResponseMessage的任务。

希望有所帮助。

答案 1 :(得分:0)

除了进一步的输入,这似乎是唯一可行的解​​决方案:

[HttpPost][ActionName("Save")]
public async Task<HttpResponseMessage> SaveGameState(Guid instanceId, [FromBody] ComparisonGameState state)
{
    await gameInstancesClient.SaveGameState(instanceId, state);
    return new HttpResponseMessage { StatusCode = System.Net.HttpStatusCode.Created };
}