0

ASP.NET Web Api を使用していますが、メソッドの 1 つが POST 操作として公開されています。正常に動作しますが、期待どおりの 201 ではなく 204 の HTTP 結果を返します。メソッド定義は次のとおりです。

[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 };
}

ありがとうございました!

4

2 に答える 2

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 に答える
0

アクション定義の Task タイプを HttpResponseMessage の Task に変更してみてください。内部的に、WebAPI は非ジェネリック タスクを void を返すかのように扱うため、204 を返します。タスクが HttpResponseMessage を返す場合は、戻り値の型を HttpResponseMessage のタスクに変更してください。

それが役立つことを願っています。

于 2012-11-13T23:34:50.330 に答える