Comment retourner un code de statut 200 HTTP à partir du contrôleur ASP.NET MVC 3

J’écris une application qui accepte les données POST d’un service tiers.

Lorsque cette donnée est POSTed, je dois renvoyer un code d’état 200 HTTP.

Comment puis-je le faire depuis mon contrôleur?

Dans votre contrôleur, vous retourneriez un HttpStatusCodeResult comme celui-ci …

[HttpPost] public ActionResult SomeMethod(...your method parameters go here...) { // todo: put your processing code here //If not using MVC5 return new HttpStatusCodeResult(200); //If using MVC5 return new HttpStatusCodeResult(HttpStatusCode.OK); // OK = 200 } 

200 est juste l’en-tête HTTP normal pour une demande réussie. Si c’est tout ce dont vous avez besoin, le contrôleur doit simplement return new EmptyResult();

Vous pouvez simplement définir le code d’état de la réponse à 200 comme suit

 public ActionResult SomeMethod(parameters...) { //others code here ... Response.StatusCode = 200; return YourObject; } 
  [HttpPost] public JsonResult ContactAdd(ContactViewModel contactViewModel) { if (ModelState.IsValid) { var job = new Job { Contact = new Contact() }; Mapper.Map(contactViewModel, job); Mapper.Map(contactViewModel, job.Contact); _db.Jobs.Add(job); _db.SaveChanges(); //you do not even need this line of code,200 is the default for ASP.NET MVC as long as no exceptions were thrown //Response.StatusCode = (int)HttpStatusCode.OK; return Json(new { jobId = job.JobId }); } else { Response.StatusCode = (int)HttpStatusCode.BadRequest; return Json(new { jobId = -1 }); } } 

La manière de le faire dans .NET Core est la suivante:

 public async Task YourAction(YourModel model) { if (ModelState.IsValid) { return StatusCode(200); } return StatusCode(400); } 

La méthode StatusCode renvoie un type de StatusCodeResult qui implémente IActionResult et peut donc être utilisé comme type de retour de votre action.

En tant que refactor, vous pouvez améliorer la lisibilité en utilisant une dissortingbution des codes d’état HTTP enum comme:

 return StatusCode((int)HttpStatusCode.OK); 

En outre, vous pouvez également utiliser certains types de résultats intégrés. Par exemple:

 return Ok(); // returns a 200 return BadRequest(ModelState); // returns a 400 with the ModelState as JSON 

Réf. StatusCodeResult – https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.statuscoderesult?view=aspnetcore-2.1