web-dev-qa-db-ja.com

コントローラから特定のステータスコードを返し、内容を返さない方法は?

以下の例のコントローラーに、内容のないステータスコード418を返すようにします。ステータスコードの設定は簡単ですが、リクエストの終了を知らせるために何かする必要があるようです。 ASP.NET Core以前のMVCやWebFormsではResponse.End()への呼び出しになる可能性がありますが、Response.Endが存在しないASP.NET Coreではどのように機能しますか?

public class ExampleController : Controller
{
    [HttpGet][Route("/example/main")]
    public IActionResult Main()
    {
        this.HttpContext.Response.StatusCode = 418; // I'm a teapot
        // How to end the request?
        // I don't actually want to return a view but perhaps the next
        // line is required anyway?
        return View();   
    }
}
89
Ron C

this.HttpContext.Response.StatusCode = 418; // I'm a teapot

リクエストを終了する方法

他の解決策を試してください。

return StatusCode(418);


HTTPステータスコードを返すためにStatusCode(???)を使うことができます。


また、専用の結果を使用することもできます。

成功:

  • return Ok()←HTTPステータスコード200
  • return Created()←HTTPステータスコード201
  • return NoContent();←HTTPステータスコード204

クライアントエラー:

  • return BadRequest();←HTTPステータスコード400
  • return Unauthorized();←HTTPステータスコード401
  • return NotFound();←HTTPステータスコード404


詳細:

189
Lukasz Makowej

誰かがIHttpActionResultを使用してこれを実行したい場合は、Web APIプロジェクトに含まれている可能性があります。以下が役立ちます。

// GET: api/Default/
public IHttpActionResult Get()
{
    //return Ok();//200
    //return StatusCode(HttpStatusCode.Accepted);//202
    //return BadRequest();//400
    //return InternalServerError();//500
    //return Unauthorized();//401
    return Ok();
}
1
PAVITRA

このコードは、.NET以外のCore MVCコントローラでも機能する可能性があります。

this.HttpContext.Response.StatusCode = 418; // I'm a teapot
return Json(new { status = "mer" }, JsonRequestBehavior.AllowGet);
0
sobelito