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.End
no 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 418
Seria funcionalidad faltante aquí, Microsoft.NoContent();
que devuelve el código de error http 204.StatusCodes
desde elMicrosoft.AspNetCore.Http
espacio 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
IHttpActionResult
proyecto 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