J'ai besoin de gérer 404 exceptions différemment de tous les autres types d'entre eux. Quel est le meilleur moyen d'identifier ces 404 exceptions (distinguer des autres exceptions)? P>
Le problème est qu'il n'y a pas de classe d'exception spéciale pour 404 erreurs, je reçois régulièrement System.web.httpException avec Message = "Le fichier n'existe pas." P>
Devrais-je simplement utiliser le message d'exception pour cela ou y a-t-il une meilleure façon? P>
merci. p>
4 Réponses :
Je vous suggère de configurer votre application pour rediriger les erreurs 404 sur une page spécifique, telle que Pour configurer votre application Web pour rediriger l'utilisateur. à une page personnalisée de la face d'un 404, ajoutez le balisage suivant à ~ / quadrohfour.aspx code>. Dans cette page, vous pouvez inspecter le paramètre
aspxErrorPath code> QueryString, qui signalera la page que l'utilisateur tentait de visiter. À partir de là, vous pouvez faire toutes sortes de choses intéressantes, de la journalisation du 404, de vous envoyer un message pour tenter de déterminer l'URL correcte et de rediriger automatiquement l'utilisateur à cela.
web.config code> dans le
<customErrors mode="On" defaultRedirect="~/GeneralError.aspx">
<error statusCode="404" redirect="~/FourOhFour.aspx" />
</customErrors>
li>
ul> p>
Merci. Je fais tout cela déjà, mais ce n'est pas un problème. Mon problème est que l'exception est toujours lancée dans Global.Axax Même si Redirection a travaillé et j'ai besoin de le gérer là-bas. Comment puis-je dire que l'exception est HTTP 404 et non l'autre?
Dans le fichier web.config, vous pouvez spécifier un fichier distinct pour chaque code d'erreur.
Je fais déjà cela, mais l'exception que j'ai décrite est toujours jetée et j'ai toujours besoin de le gérer correctement dans Global.Axax.
Vous pouvez attraper l'exception. Vous essayez d'attraper cela dans une application client, correct?
HttpWebRequest req = ( HttpWebRequest )WebRequest.Create( someURL ); try { HttpWebResponse resp = req.GetResponse(); } catch( WebException webEx ) { if( webEx.Response != null ) { HttpWebResponse response = webEx.Response as HttpWebResponse; switch( response.StatusCode ) { case HttpStatusCode.NotFound: // do something break;
Nope, c'est un côté pur serveur: global.asax. Je n'ai aucun problème à attraper l'exception, mon problème est de l'identifier comme http 404.
Vous pouvez essayer de jeter l'exception en tant que Par exemple: p> httpexception code>, puis utilisez la méthode
gethttpcode code> pour vérifier s'il s'agit d'un 404 ou non.
Excellent! Merci! Ça y est ...!
Manipuler où? Dans Global.Asax Handler d'erreur d'application? Dans le code qui appelle à une autre application ASP.NET (c'est-à-dire un client Web)?
Gérer dans global.aSax sur le côté serveur.