Gestion des erreurs ASP.NET Grand point a apprendre : Comment ajouter la gest
Gestion des erreurs ASP.NET Grand point a apprendre : Comment ajouter la gestion des erreurs globales à la configuration de l’application. Comment ajouter la gestion des erreurs aux niveaux d’application, de page et de code. Comment journaliser les erreurs pour une révision ultérieure. Comment afficher les messages d’erreur qui ne compromissent pas la sécurité. Comment implémenter la journalisation des erreurs des modules et des gestionnaires de journalisation des erreurs (ELMAH). Vue d’ensemble ASP.NET applications doivent être en mesure de gérer les erreurs qui se produisent pendant l’exécution de manière cohérente. ASP.NET utilise le COMMON Language Runtime (CLR), qui permet de notifier les applications d’erreurs de manière uniforme. Lorsqu’une erreur se produit, une exception est levée. Une exception est toute erreur, condition ou comportement inattendu rencontré par une application. Dans le .NET Framework, une exception est un objet qui hérite de la classe System.Exception. Une exception est levée à partir d'une partie du code où un problème s'est produit. L’exception est passée à la pile des appels à un endroit où l’application fournit du code pour gérer l’exception. Si l’application ne gère pas l’exception, le navigateur est forcé d’afficher les détails de l’erreur. En guise de meilleure pratique, gérez les erreurs au niveau du code dans les Try//CatchFinally blocs de votre code. Essayez de placer ces blocs afin que l’utilisateur puisse corriger les problèmes dans le contexte dans lequel il se produit. Si les blocs de gestion des erreurs sont trop éloignés de l’endroit où l’erreur s’est produite, il devient plus difficile de fournir aux utilisateurs les informations dont ils ont besoin pour résoudre le problème. Exception, classe En guise de meilleure pratique, gérez les erreurs au niveau du code dans les Try//CatchFinally blocs de votre code. Essayez de placer ces blocs afin que l’utilisateur puisse corriger les problèmes dans le contexte dans lequel il se produit. Si les blocs de gestion des erreurs sont trop éloignés de l’endroit où l’erreur s’est produite, il devient plus difficile de fournir aux utilisateurs les informations dont ils ont besoin pour résoudre le problème. Hiérarchie d’héritage d’exception Le runtime a un ensemble de bases d’exceptions dérivant de la SystemException classe levée par le runtime lorsqu’une exception est rencontrée. La plupart des classes qui héritent de la classe Exception, telles que la IndexOutOfRangeException classe et la ArgumentNullException classe, n’implémentent pas d’autres membres. Par conséquent, les informations les plus importantes pour une exception sont disponibles dans la hiérarchie des exceptions, le nom de l’exception et les informations contenues dans l’exception. Hiérarchie de gestion des exceptions Dans une application ASP.NET Web Forms, les exceptions peuvent être gérées en fonction d’une hiérarchie de gestion spécifique. Une exception peut être gérée aux niveaux suivants : Niveau d’application Niveau de page Niveau de code Lorsqu’une application gère les exceptions, des informations supplémentaires sur l’exception héritée de la classe Exception peuvent souvent être récupérées et affichées à l’utilisateur. Outre l’application, la page et le niveau de code, vous pouvez également gérer des exceptions au niveau du module HTTP et à l’aide d’un gestionnaire personnalisé IIS. Gestion des erreurs au niveau de l’application Vous pouvez gérer les erreurs par défaut au niveau de l’application en modifiant la configuration de votre application ou en ajoutant un Application_Error gestionnaire dans le fichier Global.asax de votre application. Vous pouvez gérer les erreurs par défaut et les erreurs HTTP en ajoutant une customErrors section au fichier Web.config . La customErrors section vous permet de spécifier une page par défaut vers laquelle les utilisateurs seront redirigés lorsqu’une erreur se produit. Il vous permet également de spécifier des pages individuelles pour des erreurs de code d’état spécifiques. <configuration> <system.web> <customErrors mode="On" defaultRedirect="ErrorPage.aspx?handler=customErrors %20section%20-%20Web.config"> Malheureusement, lorsque vous utilisez la configuration pour rediriger l’utilisateur vers une autre page, vous n’avez pas les détails de l’erreur qui s’est produite. Toutefois, vous pouvez intercepter les erreurs qui se produisent n’importe où dans votre application en ajoutant du Application_Error code au gestionnaire dans le fichier Global.asax . Gestion des événements d’erreur au niveau de la page Un gestionnaire au niveau de la page renvoie l’utilisateur à la page où l’erreur s’est produite, mais étant donné que les instances de contrôles ne sont pas conservées, il n’y aura plus rien sur la page. Pour fournir les détails d’erreur à l’utilisateur de l’application, vous devez écrire spécifiquement les détails de l’erreur dans la page. void Application_Error(object sender, EventArgs e) { Exception exc = Server.GetLastError(); if (exc is HttpUnhandledException) { // Pass the error on to the error page. Server.Transfer("ErrorPage.aspx?handler=Application_Error%20-%20Global.asax", true); } } En règle générale, vous utilisez un gestionnaire d’erreurs au niveau de la page pour consigner les erreurs non gérées ou pour amener l’utilisateur à une page qui peut afficher des informations utiles. Cet exemple de code montre un gestionnaire pour l’événement Error dans une page web ASP.NET. Ce gestionnaire intercepte toutes les exceptions qui ne sont pas déjà gérées dans les try/catch blocs de la page. Une fois que vous avez géré une erreur, vous devez l’effacer en appelant la ClearError méthode de l’objet Server (HttpServerUtility classe), sinon vous verrez une erreur qui s’est produite précédemment. Gestion des erreurs au niveau du code L’instruction try-catch se compose d’un bloc try suivi d’une ou plusieurs clauses catch, qui spécifient des gestionnaires pour différentes exceptions. Lorsqu’une exception est levée, le COMMON Language Runtime (CLR) recherche l’instruction catch qui gère cette exception. Si la méthode en cours d’exécution ne contient pas de bloc catch, le CLR examine la méthode qui a appelé la méthode actuelle, et ainsi de suite, sur la pile des appels. Si aucun bloc catch n’est trouvé, le CLR affiche un message d’exception non géré à l’utilisateur et arrête l’exécution du programme. private void Page_Error(object sender, EventArgs e) { Exception exc = Server.GetLastError(); // Handle specific exception. if (exc is HttpUnhandledException) { ErrorMsgTextBox.Text = "An error occurred on this page. Please verify your " + "information to resolve the issue." } // Clear the error from the server. Server.ClearError(); } L’exemple de code suivant montre un moyen courant d’utiliser try//catchfinally pour gérer les erreurs. Dans le code ci-dessus, le bloc try contient le code qui doit être protégé contre une exception possible. Le bloc est exécuté jusqu’à ce qu’une exception soit levée ou que le bloc soit terminé correctement. Si une FileNotFoundException exception ou une IOException exception se produit, l’exécution est transférée vers une autre page. Ensuite, le code contenu dans le bloc final est exécuté, si une erreur s’est produite ou non. Ajout de la prise en charge de la journalisation des erreurs Avant d’ajouter la gestion des erreurs à l’exemple d’application Wingtip Toys, vous allez ajouter la prise en charge de la journalisation des erreurs en ajoutant une ExceptionUtility classe au dossier Logique . En procédant ainsi, chaque fois que l’application gère une erreur, les détails de l’erreur sont ajoutés au fichier journal des erreurs. 1. Cliquez avec le bouton droit sur le dossier Logique , puis sélectionnez Ajouter - >Nouvel élément. La boîte de dialogue Ajouter un nouvel élément s’affiche. 2. Sélectionnez le groupe de modèles Visual C# ->Code à gauche. Ensuite, sélectionnez Classedans la liste intermédiaire et nommez-la ExceptionUtility.cs. 3. Choisissez Ajouter. Le nouveau fichier de classe s’affiche. 4. Remplacez le code existant par le code ci-dessous : Lorsqu’une exception se produit, l’exception peut être écrite dans un fichier journal d’exception en appelant la LogException méthode. Cette méthode prend deux paramètres, l’objet d’exception et une chaîne contenant des détails sur la source de l’exception. Le journal des exceptions est écrit dans le fichier ErrorLog.txt dans le dossier App_Data . Ajout d’une page d’erreur Dans l’exemple d’application Wingtip Toys, une page sera utilisée pour afficher les erreurs. La page d’erreur est conçue pour afficher un message d’erreur sécurisé aux utilisateurs du site. Toutefois, si l’utilisateur est un développeur qui effectue une requête HTTP qui est servie localement sur l’ordinateur où le code vit, des détails d’erreur supplémentaires s’affichent sur la page d’erreur. 1. Cliquez avec le bouton droit sur le nom du projet (Wingtip Toys) dans Explorateur de solutions, puis sélectionnez Ajouter ->Nouvel élément. La boîte de dialogue Ajouter un nouvel élément s’affiche. 2. Sélectionnez le groupe de modèles Visual C# ->Web à gauche. Dans la liste intermédiaire, sélectionnez Formulaire Web avec page maître, puis nommez-le ErrorPage.aspx. 3. Cliquez sur Add. 4. Sélectionnez le fichier Site.Master en tant que page maître, puis choisissez OK. 5. Remplacez le balisage existant par ce qui suit : <%@ Page Title="" Language="C#" AutoEventWireup="true" MasterPageFile="~/Site.Master" CodeBehind="ErrorPage.aspx.cs" Inherits="WingtipToys.ErrorPage" %> <asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> <h2>Error:</h2> <p></p> <asp:Label ID="FriendlyErrorMsg" runat="server" Text="Label" Font-Size="Large" style="color: red"></asp:Label> <asp:Panel ID="DetailedErrorPanel" runat="server" Visible="false"> <p> </p> <h4>Detailed Error:</h4> <p> <asp:Label ID="ErrorDetailedMsg" runat="server" Font-Size="Small" /><br /> </p> <h4>Error Handler:</h4> <p> <asp:Label ID="ErrorHandler" runat="server" Font-Size="Small" /><br /> </p> <h4>Detailed Error Message:</h4> <p> <asp:Label ID="InnerMessage" runat="server" Font-Size="Small" /><br /> </p> <p> <asp:Label ID="InnerTrace" runat="server" /> </p> </asp:Panel> </asp:Content> 6. Remplacez le code existant du code-behind (ErrorPage.aspx.cs) afin qu’il apparaisse comme suit : using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using WingtipToys.Logic; namespace WingtipToys { public uploads/Management/ gestion-des-erreurs-asp.pdf
Documents similaires
-
17
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jui 24, 2022
- Catégorie Management
- Langue French
- Taille du fichier 0.7626MB