Je veux que l'exemple de contrôleur ci-dessous renvoie un code d'état 418 sans contenu. La définition du code d'état est assez simple, mais il semble qu'il y ait quelque chose à faire pour signaler la fin de la demande. Dans MVC avant ASP.NET Core ou dans WebForms qui peuvent ê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();
}
}
there is no dedicated result for 418
Grave fonctionnalité manquante ici, Microsoft.NoContent();
qui renvoie le code d'erreur http 204.StatusCodes
depuis l'Microsoft.AspNetCore.Http
espace de noms ( github.com/aspnet/HttpAbstractions/blob/dev/src/… ).StatusCode(StatusCodes.Status412PreconditionFailed);
Ce code peut fonctionner pour les contrôleurs non-.NET Core MVC:
la source
Si quelqu'un veut faire cela avec un
IHttpActionResult
peut être dans un projet d'API Web, ci-dessous peut être utile.la source
Regardez comment les résultats d'objets actuels sont créés. Voici le BadRequestObjectResult. Juste une extension de l'ObjectResult avec une valeur et StatusCode.
https://github.com/aspnet/Mvc/blob/master/src/Microsoft.AspNetCore.Mvc.Core/BadRequestObjectResult.cs
J'ai créé un TimeoutExceptionObjectResult de la même manière pour 408.
Client:
la source
La meilleure façon de le faire est:
'StatusCodes' a tous les types de statut de retour et vous pouvez tous les voir dans ce lien https://httpstatuses.com/
Une fois que vous avez choisi votre StatusCode, renvoyez-le avec un message.
la source