Quiero que el controlador de ejemplo a continuación devuelva un código de estado 418 sin contenido. Configurar el código de estado es bastante fácil, pero luego parece que hay algo que debe hacerse para señalar el final de la solicitud. En MVC antes de ASP.NET Core o en WebForms, eso podría ser una llamada, Response.End()pero ¿cómo funciona en ASP.NET Core donde Response.Endno existe?
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();
}
}

there is no dedicated result for 418Seria funcionalidad faltante aquí, Microsoft.NoContent();que devuelve el código de error http 204.StatusCodesdesde elMicrosoft.AspNetCore.Httpespacio de nombres ( github.com/aspnet/HttpAbstractions/blob/dev/src/… ).StatusCode(StatusCodes.Status412PreconditionFailed);Este código podría funcionar para controladores MVC que no son de .NET Core:
fuente
Si alguien quiere hacer esto con un
IHttpActionResultproyecto de API web, a continuación puede ser útil.fuente
Mire cómo se crean los resultados de objetos actuales. Aquí está el BadRequestObjectResult. Solo una extensión de ObjectResult con un valor y StatusCode.
https://github.com/aspnet/Mvc/blob/master/src/Microsoft.AspNetCore.Mvc.Core/BadRequestObjectResult.cs
Creé un TimeoutExceptionObjectResult de la misma manera para 408.
Cliente:
fuente
La mejor forma de hacerlo es:
'StatusCodes' tiene todo tipo de estados de devolución y puedes verlos todos en este enlace https://httpstatuses.com/
Una vez que elija su StatusCode, devuélvalo con un mensaje.
fuente