8
votes

Comment montrer une page 404 personnalisée dans ASP.NET sans rediriger?

Lorsqu'une demande est 404 dans ASP.NET sur IIS 7, je veux une page d'erreur personnalisée à afficher. L'URL de la barre d'adresse ne doit pas changer, donc pas de redirection. Comment puis-je faire cela?


1 commentaires

Vous avez beaucoup de tags - est-ce WebForms ou MVC?


3 Réponses :


0
votes

Vous pouvez utiliser

Server.Transfer("404error.aspx")


0 commentaires

2
votes

J'utilise un module HTTP pour gérer cela. Il fonctionne pour d'autres types d'erreurs, pas seulement 404, et vous permet de continuer à utiliser la section WEB.Config personnalisée pour configurer quelle page est affichée.

<httpModules>
     ...
     <add name="CustomErrorsTransferModule" type="WebSite.CustomErrorsTransferModule, WebSite" />
     ...
</httpModules>


0 commentaires

7
votes

En tant que solution General ASP.NET, dans la section CustomErrors dans la web.config, ajoutez l'attribut RedirectMode = "RépendreWrite". XXX

REMARQUE: Ceci utilise en interne un serveur.Transfer () La redirection doit donc être un fichier réel sur le serveur Web. Il ne peut pas être une route MVC.


5 commentaires

NB Ceci a été ajouté en 3.5 SP1.


J'ai une page Web qui jette InvalidOperationException, ce qui donne une erreur de 500 erreurs renvoyées. Toutefois, lorsque j'ai ajouté l'extrait de configuration ci-dessus, la page d'erreur s'affiche, mais le code d'état HTTP est modifié en 200. Utilisation de ASP.NET 4.0 et 4.5.


Ouais, le travail autour est de définir manuellement la réponse.Statustuscode dans la méthode Render remplie de 404.aspx.c. Il y a probablement une meilleure solution, mais cela semble fonctionner.


Alors, pourquoi redirigerez-vous une page ASPX si elle doit être un fichier statique :-)


Ce n'est pas le cas. Le fichier doit simplement exister sur le système de fichiers. Je suppose que vous pourriez utiliser un fichier HTML si vous le souhaitez. Dans mon cas, la page ASPX rend le contenu dynamique de la page d'erreur.