私が持っているASP.netMVC 2アプリで、ポスト操作に対して204 NoContent応答を返したいです。現在の私のコントローラーメソッドにはvoidの戻り値の型がありますが、これにより、Content-Lengthヘッダーが0に設定された200 OKとしてクライアントに応答が返されます。応答を204にするにはどうすればよいですか?
[HttpPost]
public void DoSomething(string param)
{
// do some operation with param
// now I wish to return a 204 no content response to the user
// instead of the 200 OK response
}
MVC3には HttpStatusCodeResultクラス があります。あなたはMVC2アプリケーションのためにあなた自身を転がすことができます:
public class HttpStatusCodeResult : ActionResult
{
private readonly int code;
public HttpStatusCodeResult(int code)
{
this.code = code;
}
public override void ExecuteResult(System.Web.Mvc.ControllerContext context)
{
context.HttpContext.Response.StatusCode = code;
}
}
次のようにコントローラーメソッドを変更する必要があります。
[HttpPost]
public ActionResult DoSomething(string param)
{
// do some operation with param
// now I wish to return a 204 no content response to the user
// instead of the 200 OK response
return new HttpStatusCodeResult(HttpStatusCode.NoContent);
}
ASP.NET Core 2では、NoContent
を使用できます。
[HttpPost("Update")]
public async Task<IActionResult> DoSomething(object parameters)
{
return NoContent();
}
IHttpActionResultを返し、StatusCode
を使用するだけです。
public IHttpActionResult DoSomething()
{
//do something
return StatusCode(System.Net.HttpStatusCode.NoContent);
}
参考までに、私はあなたのアプローチを使用していますが、204 No Content(voidを返すだけ)が返されます。別の問題があると思います
[HttpPost]
public void SetInterests(int userid, [FromBody] JObject bodyParams)
{
....
.....
//returning nothing
}