Lancer une exception HttpException renvoie toujours l'erreur HTTP 500?
Je suis en train de lancer un code d'erreur HTTP 403 retour au client. J'ai lu que HttpException est la meilleure façon d'accomplir cela, mais il ne fonctionne pas pour moi. Je jette l'exception de l'intérieur d'une page comme ceci:
throw new HttpException(403,"You must be logged in to access this resource.");
Cependant, cela ne fera que donner une ASP.Net trace de la pile(avec erreur 500) lorsque CustomErrors est éteint. Si CustomErrors est sur, alors ce ne sera pas le rediriger vers la page que j'ai mis à afficher lorsqu'une erreur 403 se produit. Dois-je oublier HttpException et, à la place de tous les HTTP codes de moi-même? Comment puis-je résoudre ce problème?
Les erreurs personnalisées partie de mon Web.Config est: est-ce
<customErrors mode="On" defaultRedirect="GenericErrorPage.html">
<error statusCode="403" redirect="Forbidden.html" />
</customErrors>
Au lieu de s'Forbidden.html, je vais les faire GenericErrorPage.html
source d'informationauteur Earlz
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de remplacer l'Application d'erreur comme ceci:
Puis vous avez à ajouter les errorsController:
Et le dernier de créer une vue pour errorsController. J'ai créé un seul point de vue appelé indice de Vues/Erreurs/.
Espère que cela a été utile.
Ce qui concerne les!
Avec ce code inclus dans l'élément de configuration/système.web de Web.config fichier:
J'ai réussi à fonctionner comme prévu.
Vous pouvez trouver un bon tutoriel avec des exemples (exemple 3 est celui de droite) ici:
http://aspnetresources.com/articles/CustomErrorPages
Ou vous pouvez utiliser la Réponse.État de le faire:
Asp Classique de retour spécifique de code de statut http
En fait, j'ai fini par faire mon propre astucieux peu de classe pour résoudre ce problème. Il ne gère pas tout et je ne suis pas sûr qu'il joue de nice avec MVC, mais il fonctionne pour mon utilisation. En gros, au lieu de s'appuyer sur ASP.Net à la sortie de la page d'erreur correcte et le code d'erreur, il va effacer l'erreur et effectuer une côté serveur, le transfert et l'affichage Web appropriés.Erreur de configuration de la page. Il reconnaît également le mode customErrors et réagit en conséquence.
Et puis pour l'activer, il suffit d'ajouter une petite chose de Global.asax