Как вернуть определенный код состояния и отсутствие содержимого из контроллера?


Я хочу, чтобы приведенный ниже пример контроллера возвращал код состояния 418 без содержимого. Установка кода состояния достаточно проста, но тогда кажется, что есть что-то, что нужно сделать, чтобы сигнализировать об окончании запроса. В MVC до ASP.NET ядро или в веб-формах, которые могут быть вызовом Response.End() но как это работает в ASP.NET ядро где 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();   
    }
}
2 71

2 ответа:

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

как завершить запрос?

попробуйте другое решение, просто:

return StatusCode(418);


Вы могли бы использовать StatusCode(???) возвращает код статуса HTTP.


Кроме того, вы можете использовать выделенные результаты:

успех:

  • return Ok() Http код состояния Http 200
  • return Created() Http Http status code 201
  • return NoContent(); Http код состояния Http 204

Ошибка Клиента:

  • return BadRequest(); Http код состояния Http 400
  • return Unauthorized(); Http код состояния Http 401
  • return NotFound(); Http код состояния Http 404


Подробнее:

этот код может работать для non-.NET основные контроллеры MVC:

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