0

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

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

它返回 Task 的事实是否会混淆 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 };
}

谢谢!

4

2 回答 2

0

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

希望有帮助。

于 2012-11-13T23:34:50.330 回答
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 };
}
于 2012-11-20T21:15:57.840 回答