web-dev-qa-db-fra.com

Comment renvoyer un code d'état spécifique et aucun contenu du contrôleur?

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

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 200
  • return Created() ← Code d'état HTTP 201
  • return NoContent(); ← Code d’état HTTP 204

Erreur du client:

  • return BadRequest(); ← Code d’état HTTP 400
  • return Unauthorized(); ← Code d’état HTTP 401
  • return NotFound(); ← Code d’état Http 404


Plus de détails:

179
Lukasz Makowej

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

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);
0
sobelito