Je veux que l'exemple de contrôleur ci-dessous renvoie un code d'état 418 sans contenu. La définition du code de statut est assez simple, mais il semble alors qu’il reste quelque chose à faire pour signaler la fin de la demande. Dans MVC antérieur à ASP.NET Core ou dans WebForms, cela pourrait être un appel à Response.End()
mais comment cela fonctionne-t-il dans ASP.NET Core où Response.End
n'existe pas?
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
Comment mettre fin à la demande?
Essayez une autre solution, juste:
return StatusCode(418);
Vous pouvez utiliser StatusCode(???)
pour renvoyer n'importe quel code d'état HTTP.
De plus, vous pouvez utiliser des résultats dédiés:
Succès:
return Ok()
← Code d’état Http 200return Created()
← Code d'état HTTP 201return NoContent();
← Code d’état HTTP 204Erreur du client:
return BadRequest();
← Code d’état HTTP 400return Unauthorized();
← Code d’état HTTP 401return NotFound();
← Code d’état Http 404
Plus de détails:
Si quelqu'un souhaite utiliser une variable IHttpActionResult
dans un projet d'API Web, la procédure ci-dessous peut être utile.
// 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();
}
Ce code pourrait fonctionner pour les contrôleurs MVC non .NET Core:
this.HttpContext.Response.StatusCode = 418; // I'm a teapot
return Json(new { status = "mer" }, JsonRequestBehavior.AllowGet);