Quiconque a déjà développé une application Web à l’aide d’ASP doit savoir à quel point il est difficile de déboguer une application Web. Dans ASP, le débogage est pénible et implique généralement l'impression de la valeur d'une variable à l'aide de la méthode Response.Write(). Alors posez-vous la question : combien de fois avez-vous oublié de supprimer les instructions de débogage avant de déployer votre application ?
Cette situation a complètement changé avec l'avènement des composants .NET Framework. Dans .NET, vous pouvez suivre l'exécution d'une application Web entière à l'aide du débogueur dans Visual Studio .NET ou en utilisant la classe Trace dans l'espace de noms System.Web.TraceContext. Cet article montre comment utiliser la classe Trace pour faciliter votre travail de débogage.
Utiliser la classe Trace
ASP.NET inclut une classe Trace qui permet de suivre le flux d'informations sur les applications. Au lieu d'utiliser l'objet Response pour le débogage, vous pouvez désormais utiliser la classe Trace pour imprimer les informations de débogage.
Pour démontrer son utilisation, nous construisons d’abord une application Web ASP.NET et plaçons un contrôle Button et un contrôle ListBox sur le WebForm1 par défaut (comme le montre la figure 1). Remplissez le contrôle ListBox avec trois éléments et définissez sa propriété AutoPostBack sur True.
Figure 1. Remplir le WebForm1 par défaut |
Pour cet article, je souhaite retracer le flux d'exécution de mon application. Tout d’abord, activez le suivi. L’instruction de page doit contenir l’attribut Trace et sa valeur est définie sur True (passez pour afficher le mode source HTML), comme le montre la figure 2.
Figure 2. Suivi des activations |
Ensuite, j'insère une instruction Trace dans l'événement de chargement du formulaire afin de savoir si la publication a eu lieu. L'événement PostBack est l'une des fonctionnalités les plus déroutantes d'ASP.NET et conduit souvent à des échecs pour les développeurs qui découvrent ASP.NET.
Sous-page privé_Load (expéditeur ByVal en tant que System.Object, _ ByVal et As System.EventArgs) _ Gère MyBase.Load 'Placez ici le code utilisateur pour initialiser la page Trace.Write("Page chargée") Si ce n'est pas IsPostBack, alors Trace.Write("Pas dans une publication") 'Effectuer certaines opérations lors de la publication. Sinon Trace.Write("Dans une publication") 'Effectuer quelques opérationsFin Si Fin du sous-marin |
J'aimerais également savoir si la publication se produit lorsqu'un élément ListBox est sélectionné :
Private Sub ListBox1_SelectedIndexChanged (expéditeur ByVal As _ Système.Object, _ ByVal et As System.EventArgs) gère _ ListBox1.SelectedIndexChanged Trace.Write("Publication de la liste") Fin du sous-marin |
Lorsque l'application ASP.NET ci-dessus s'exécute, la sortie suivante s'affiche (illustré dans la figure 3) :
Figure 3. Affichage des informations de suivi |
Vous pouvez remarquer que lorsque WebForm1 est chargé pour la première fois, vous pouvez voir les chaînes « Page chargée » et « Pas dans une publication ». Si vous cliquez sur le bouton de WebForm1, vous pouvez voir l'enregistrement présenté dans la figure 4. De même, si l’utilisateur clique sur la ListBox, la chaîne « Listbox postback » sera également affichée.
Figure 4. Vérifier les informations de trace |
La page de suivi contient les sections suivantes (toutes les informations ne sont pas présentées dans la figure 3) :
Section | Description |
Détails de la demande | Décrit les informations liées à la demande, telles que l'ID de conversation, le codage et l'heure de la demande. |
Les informations de trace | contiennent des détails sur les applications en cours d'exécution. Les informations de suivi sont affichées dans cette section. |
L'arborescence des contrôles | affiche des informations sur les contrôles dans une page et la taille des champs masqués Viewstate. |
La collection Cookie | affiche les cookies définis par la page et ses valeurs. |
La collection d'en-têtes | affiche les informations d'en-tête HTTP telles que la longueur du contenu et l'agent utilisateur. |
La collection Forms | affiche les noms des contrôles sur une page et leurs valeurs. |
Variables du serveur | affiche les variables d'environnement côté serveur. |
Notez que nos informations de suivi apparaissent sous la « Section Informations de suivi ». Si vous souhaitez désactiver le traçage, définissez simplement l'attribut Trace dans la directive page sur False. Il n'est pas nécessaire de supprimer les instructions de trace de votre application, désactiver le débogage est désormais aussi simple que de définir une valeur booléenne.
Activer/désactiver le traçage consiste simplement à modifier la valeur de l'attribut Trace dans la directive page. Vous pouvez également désactiver le suivi par programme à l’aide de la classe Trace. Les membres de la classe Trace sont les suivants :
Description | de la propriété |
IsEnabled | indique s'il faut activer le suivi de la requête en cours. |
TraceMode | définit le mode de traçage : sortByCategory ou sortByTime. |
Méthode | Description |
Warn | affiche les informations de trace en rouge. |
Écrivez | les informations de trace. |
Pour désactiver le suivi par programme, utilisez l'instruction suivante dans l'événement de chargement de WebForm1 :
Dans notre cas, les informations de suivi ne sont pas affichées de manière bien visible, elles sont donc cachées par d’autres informations de suivi. La méthode Warn() de la classe Trace peut imprimer les informations de trace en rouge. Donc au lieu d'écrire le code comme ceci :
Trace.Write("Page chargée") |
Plutôt:
Trace.Warn("Page chargée") |
La figure 5 montre les informations de débogage affichées en rouge pour la méthode Warn().
Figure 5. Utilisation de la méthode Warn() pour afficher les informations de trace en rouge |
Trier les informations de suivi
Placer plusieurs instructions de traçage dans une application peut parfois devenir encombré. Le suivi est plus facile si vos informations de suivi peuvent être divisées en différentes catégories. La classe Trace nous permet de classer et de trier les informations de trace en fonction de la catégorie.
L'exemple suivant montre comment regrouper les informations de suivi par catégorie :
Sous-page privé_Load (expéditeur ByVal en tant que System.Object, _ ByVal et As System.EventArgs) _ Gère MyBase.Load Trace.TraceMode = TraceMode.SortByCategory 'Placez ici le code utilisateur pour initialiser la page Trace.Warn("Page_Load", "Page chargée") Si ce n'est pas IsPostBack, alors 'Effectuer certaines opérations Trace.Warn("Page_Load", "Pas dans une publication") Autre Trace.Warn("Page_Load", "Dans une publication") Fin si Fin du sous-marin
Private Sub ListBox1_SelectedIndexChanged (expéditeur ByVal _ Comme System.Object, ByVal et As _ System.EventArgs) Poignées _ ListBox1.SelectedIndexChanged Trace.Warn("ListBox", "Publication de la liste") Fin du sous-marin |
Lors de l'exécution de cet exemple, les informations de débogage suivantes seront affichées, regroupées par catégorie (illustré dans la figure 6) :
Figure 6. Trier par catégorie |
Analysons le code ci-dessus :
Trace.TraceMode = TraceMode.SortByCategory |
La propriété TraceMode définit les modes pris en charge par le traçage :
· SortByCategory : trier les informations de suivi selon le type.
· SortByTime : affichez les informations de trace selon l'ordre d'exécution.
Parce que nous avons sélectionné le mode de tri par catégorie, la figure 7 montre les informations triées par catégorie.
Trace.Warn("Page_Load", "Page chargée") |
L'attribut Warn affiche le message en rouge. Notez qu'il s'agit d'une méthode surchargée. Dans l'exemple, nous lui passons deux paramètres. La première catégorie d'entrée (Catégorie), le deuxième paramètre est d'obtenir le message (Message).
En plus de définir le mode de trace à l'aide de la classe Trace, vous pouvez également spécifier le mode de trace à l'aide des directives de page :
<%@ Page Language="vb" Trace="true" TraceMode="SortByCategory" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1" %> |
Trace d'application
La dernière section traite du suivi de page, qui suit le flux d'informations d'exécution au sein d'une page. ASP.NET prend également en charge le traçage au niveau de l'application. Le traçage au niveau de l'application est défini dans le fichier web.config, sous la section trace :
Pour activer le traçage au niveau de l'application, définissez les valeurs suivantes :
Propriété | Valeur | Description |
Enabled | True | Active ou désactive le suivi au niveau de l'application. |
requestLimit | 10 | définit le nombre maximum de requêtes à suivre. |
pageOutput | False | affiche les informations de suivi à la fin de la page. |
méthode de tri des informations de trace traceMode | sortByTime | . |
localOnly | True | définit la possibilité d'afficher les traces du navigateur sur des ordinateurs non locaux. |
Lorsque l'application est chargée, les informations de suivi ne sont pas affichées sur la page. Afin d'afficher les informations de trace, nous devons utiliser le visualiseur de trace (trace.axd) :
Figure 7. Traçage au niveau de l'application |
La figure 7 montre les informations de trace pour les six dernières requêtes de l'application. Pour afficher les détails de chaque demande, cliquez sur le lien « Afficher les détails » pour chaque ligne.
Notez que si trace est défini sur true dans le fichier web.config et qu'il est défini sur false dans la directive page, le traçage sera désactivé.
Résumer
ASP.NET facilite grandement le débogage des applications Web. Maintenant que vous savez utiliser le suivi, essayez-le et voyez à quel point il améliore votre productivité !