Comment retourner HTTP 500 ASP.NET Core RC2 Api Web?
De retour en RC1, je ferais ceci:
[HttpPost]
public IActionResult Post([FromBody]string something)
{
try{
//...
}
catch(Exception e)
{
return new HttpStatusCodeResult((int)HttpStatusCode.InternalServerError);
}
}
Dans la RC2, il n'y a plus HttpStatusCodeResult, et je ne peux rien trouver qui me permet de retourner un 500 type de IActionResult.
Est l'approche totalement différente de ce que je vous demande? Que nous ne faisons plus try-catch dans Controller
code? Ne nous laissons le cadre de jeter un générique 500 exception de retour à l'API de l'appelant? Pour le développement, comment puis-je voir exactement la pile d'exception?
Vous devez vous connecter pour publier un commentaire.
De ce que je peux voir, il y a des méthodes d'assistance à l'intérieur de la
ControllerBase
classe. Utilisez simplement leStatusCode
méthode:Vous pouvez également utiliser le
StatusCode(int statusCode, object value)
surcharge qui négocie également le contenu.Vous pouvez utiliser
Microsoft.AspNetCore.Mvc.ControllerBase.StatusCode
etMicrosoft.AspNetCore.Http.StatusCodes
à la forme de votre réponse, si vous ne souhaitez pas coder en dur des chiffres précis.Si vous avez besoin d'un corps dans votre réponse, vous pouvez appeler
Cela renvoie un 500 avec l'objet de la réponse...
Une meilleure façon de gérer cela comme de maintenant (1.1) est de le faire dans
Startup.cs
'sConfigure()
:Execute la route pour
/Error
. Cela vous permettra d'économiser de l'ajout de blocs try-catch pour chaque action que vous écrivez.Bien sûr, vous aurez besoin d'ajouter un ErrorController similaire à ceci:
Plus d'informations ici.
Dans le cas où vous souhaitez obtenir à l'exception des données, vous pouvez l'ajouter à la ci-dessus
Get()
juste avant lareturn
déclaration.Ci-dessus extrait de Scott Sauber blog.
ExceptionHandler
middleware ici. Vous pouvez, bien sûr, à rouler ou à l'étendre que vous voyez l'ajustement. Voici la lien vers les sources. EDIT: Voir cette ligne pourIExceptionHandlerPathFeature
.Doit être utilisé dans non-ASP.NET contextes (voir les autres réponses ASP.NET de Base).
HttpStatusCode
est une énumération dansSystem.Net
.Comment sur la création d'une coutume ObjectResult classe qui représente une Erreur de Serveur Interne comme celui de la
OkObjectResult
?Vous pouvez mettre une méthode simple dans votre propre classe de base de sorte que vous pouvez facilement générer la InternalServerError et de le retourner comme vous ne
Ok()
ouBadRequest()
.Lorsque vous voulez retourner une réponse JSON dans MVC .Net Core, Vous pouvez également utiliser:
Ce sera le retour à la fois résultat JSON et HTTPStatus. Je l'utilise pour renvoyer des résultats à jQuery.ajax().