我正在使用ASP.NET Web Api,並且其中一種方法作爲POST操作公開。它工作正常,但它會返回204結果而不是201預期的HTTP結果。這裏是方法定義:ASP.NET Web Api HttpPost任務返回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 };
}
謝謝!
所以,你說該怎麼辦我輸入的在後第二個例子嗎?看起來它*應該*是不必要的。如果它知道它是一個HttpPost並且它不會拋出異常,它應該返回一個HttpStatusCode.Created yes?或者你必須明確說明。 – Arash
不是Arash。我認爲你的方法SaveGameState返回一個HttpResponseMessage的任務。在這種情況下,你所要做的就是改變方法簽名來匹配。 –
嗨Youssef,我完全被你推薦的東西搞糊塗了。正如我所說,我發佈的第一個代碼片段*應該*工作,但返回204(這是不正確的行爲)。第二個更詳細的代碼片段可以100%正常工作,但是我不想用冗長的方式來完成。 – Arash