我正在使用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 };
}
谢谢!
答案 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 };
}