0

J'essaie de renvoyer un message d'erreur simple comme Json, avec le HTTP code comme 404.Comment renvoyer mon propre message d'erreur 404 dans ASP.NET, mais comme json?

J'ai donc commencé à écrire mon propre IExceptionFilter qui vérifie pour voir l'exception. Pour que cela reste simple, si l'exception throw est de type ResourceNotFoundException, alors je mets le code à 404. Sinon tout le reste si 500.

Maintenant, le problème est la valeur par défaut .. IIS7 message d'erreur 404 est renvoyé :(mon code est appelé .. mais il semble contourner (plus tard dans la canalisation) ...

est là quelques-uns ? truc que je dois faire

ai-je besoin d'une gestion des erreurs personnalisée (dans la configuration Web) pour être activée ou quelque chose


Edit:? Je suis en train de faire ce que Twitter fait. Leur Http Response Code documentation montre/explique quelques exemples comment ils gérer 404, etc .. et je veux le faire dans mon application MVC.

Edit 2: Le code que je l'ai fait est répertorié here, pour anyones référence :)

+1

dégagerait JSON vraiment ce que vous voulez faire? Il ne vaudrait pas mieux pour le récepteur de lire un statut 404 et de le gérer ensuite en interne? Je veux dire, j'ai du mal à voir quelles données significatives iraient dans un paquet JSON pour un 404 que le client ne sait pas déjà. – annakata

+0

Json ou Xml. De toute façon, j'ai besoin de renvoyer un 404 et le consommateur a besoin de le gérer. C'est ce que fait Twitter, par exemple. –

Répondre

0

Lorsque vous gérez votre exception, vous définissez ExceptionHandled true?

Voici un exemple rapide ...

HandleException(ActionExecutedContext filterContext) 
{ 
    Exception exception = filterContext.Exception; 

    //Check if our exception has been handled. 
    if (filterContext.ExceptionHandled == false) 
    { 
    //Do your exception stuff 
    filterContext.Result = YourExceptionMessageAsAnActionResult(); 
    //Set it as null. 
    filterContext.ExceptionHandled = true; 
    filterContext.HttpContext.Response.Clear(); 
    } 
} 
+0

Oui, je le crois. J'ai également ajouté un lien vers le code que j'ai fait. Pouvez-vous vérifier cela, s'il vous plaît? –

+0

J'ai aussi répondu à ce message. Il semble qu'il y ait une petite faute de frappe dans votre code, mais je suis sûr que c'est juste une faute de frappe dans le code de la question, et pas ce qui est dans votre classe. –

+0

ouais, c'était juste une question typo car j'ai réduit la vraie logique de berevity. *rougir*. –

Questions connexes