115 votes

Page d’erreur personnalisé ASP.NET - Server.GetLastError est null

J’ai une page d’erreur personnalisé mis en place pour mon application :

Dans Global.asax, Application_Error(), le code suivant fonctionne pour obtenir les détails de l’exception :

Au moment où j’arrive à ma page d’erreur (~ / errors/GeneralError.aspx.cs), Server.GetLastError est null

Est-il possible que je peux obtenir les détails de l’exception sur la Page d’erreur, plutôt que dans Global.asax.cs ?

ASP.NET 3.5 sur Vista/IIS7

138voto

nailitdown Points 3927

En regardant de plus près mon web.config mis en place, l'un des commentaires dans ce post est très utile: http://msdn.microsoft.com/en-us/library/vstudio/h0hfz6fc(v=vs. 100).aspx

"dans asp.net 3.5 sp1 il y a un nouveau paramètre option redirectmode"

nous pouvons donc ammend customErrors pour ajouter ce paramètre comme ceci:

<customErrors mode="RemoteOnly" defaultRedirect="~/errors/GeneralError.aspx" redirectMode="ResponseRewrite" />

le ResponseRewrite mode nous permet de charger la Page d'Erreur sans rediriger le navigateur, l'URL reste la même, et c'est important pour moi, à l'exception de l'information n'est pas perdu.

38voto

nailitdown Points 3927

OK, j'ai trouvé ce post: http://msdn.microsoft.com/en-us/library/aa479319.aspx

avec cette très illustratif diagramme:

diagram

en substance, pour accéder à ces détails de l'exception-je besoin de stocker moi-même Mondiale.asax, pour une récupération ultérieure sur ma page d'erreur personnalisée.

il semble que le meilleur moyen est de faire le gros du travail Mondial.asax, avec les pages d'erreur personnalisées de la manipulation de contenu utile plutôt que de la logique.

18voto

rlb.usa Points 6433

Une combinaison de ce que dit NailItDown et Victor. Le préféré/plus simple consiste à utiliser votre Global.Asax pour stocker l’erreur, puis de rediriger vers votre page d’erreur personnalisée.

Global.asax:

En outre, vous devez configurer votre web.config:

Et enfin, faire tout ce que vous devez à l’exception que vous avez stocké dans votre page d’erreur:

5voto

Phil Points 61

Alors qu’il y a plusieurs bonnes réponses ici, je dois souligner qu’il n’est pas bien pratique pour afficher des messages d’exception de système sur des pages d’erreur (qui est ce que je suppose que vous voulez faire). Par inadvertance, vous pouvez révéler des choses que vous ne souhaitez pas le faire à un utilisateur malveillant. Par exemple, messages d’exception Sql Server sont très verbeux et peuvent donner les informations utilisateur de nom, mot de passe et le schéma de la base de données lorsqu’une erreur survient. Cette information ne doit pas être visible à un utilisateur final.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X