如何从控制器返回特定的状态码和内容?

我想要下面的示例控制器返回没有内容的状态代码418。 设置状态码非常简单,但是似乎需要做些事情来表明请求的结束。 在ASP.NET Core之前的MVC中,或者在可能是对Response.End()的调用的WebForms中,但是在ASP.NET Core中如何工作,其中Response.End不存在?

 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(); } } 

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

如何结束这个请求??????

尝试其他解决scheme,只是:

 return StatusCode(418); 

您可以使用StatusCode(???)返回任何HTTP状态码。

另外,您可以使用专门的结果:

成功:

  • return Ok() ←Http状态码200
  • return Created() ←Http状态码201
  • return NoContent(); ←Http状态码204

客户端错误:

  • return BadRequest(); ←Http状态码400
  • return Unauthorized(); ←Http状态码401
  • return NotFound(); ←Http状态码404

更多细节:

  • ControllerBase类 (谢谢@Technetium)
  • StatusCodes.cs (在ASP.NET核心中可用的常量)
  • 在维基上的HTTP状态码
  • HTTP状态码IANA