Le Débug en ASP.NET
Transcription
Le Débug en ASP.NET
Le Débug en ASP.NET Comment débugguer son application Web en ASP.NET Une question classique dans n'importe quel langage de programmation est le débug. Ainsi comment peut-on suivre le cours de l'exécution de sa page WEB afin de détecter les erreurs éventuelles. Débugguer une application WEB en ASP.NET Lors d'un développement d'application WEB, même si l'outil de développement Visual Studio.Net contient un débuggeur, plusieurs raisons peuvent inviter à gérer soi- même son débug : Ø Tout le monde ne déve loppe pas forcément avec VS.NET Ø En cas de problème sur le serveur de production (ou Intégration) on ne pourra pas utiliser VS.NET pour chercher la raison pour laquelle une page ne fonctionne pas. Ø ... Tout ceci peut se faire via plusieurs techniques mais en exploitant la classe : Ø HttpContext.Current.Trace HttpContext : Regroupe un ensemble de classes gérant l'affichage dans la fenêtre courante de l'utilisateur. On y retrouve par exemple le "fameux" Response.End et Response.Write (tellement utilisé en ASP). 1 Les Messages La classe à utiliser est : Ø HttpContext.Current.Trace Dans cette classe, on a 2 principales fonctions : Ø Write Ø Warn Le WRITE permet d'afficher un message simplement, c'est-à-dire que celui-ci sera avec la même présentation que les autres messages de la Trace. Le WARN permet d'afficher un message de façon plus visible (en Rouge) de façon a faire ressortir ce message parmis les autres du TRACE. Elles permettent d'afficher dans la trace le message souhaité de la façon suivante (même principe pour Write que pour Warn). Dans le cas d'un message simple : § Write ("Mon message") Dans le cas d'un message avec un titre du message : § Write ("TitreMessage", "Mon Message") Ainsi, par exemple, on peut afficher la valeur de la variable que l'on souhaite suivre de la facon suivante : § Write ("Mavariable : ", NomVariable) L'exemple suivant vous montre la trace dans le cas d'un Warn ou d'un Write : 2 La Trace Nous allons présenter ce que contient la Trace et donc les groupes d'informations qui peuvent nous y être fournies. • • • • • • Les Détails de la Demande (Request Detail en US) Les Informations de traçage (Trace Information en US) L'Arborescence du contrôle (Control Hierarchy en US) La Collection des Cookies (Cookies Collection en US) La Collection des Entêtes (Headers Collection en US) Les Variables serveur (Server Variables en US) Détaillons maintenant ce que donne chaque groupe d'information. FRANCAIS Les Détails de la Demande Nom Description US Request Detail Value Description ID de la session L'ID de la Session pour la Demande Session Id Heure de la demande Heure de la Demande Time of Request Code d'état Le Code Retour pour cette demande Status Code Type de la demande Codage de la demande Codage de réponse Request Type GET | POST Request Encoding Response Encoding Le Type de Codage utilisé pour la Demande Le Type de Codage utilisé pour la Réponse The Session Id for this request The time the request was made The returned status code for this request GET | POST Encoding for the request Encoding for the response Les Informations de traçage Trace Information Nom Description Value Description La Catégorie de la Trace The category for a Trace Catégorie Category écrite dans le TraceContext statement written to the TraceContext Messages Le message pour cette Trace The message string for this À partir des Temps en Secondes depuis Message Trace statement premiers (s) le premier chargement From First Time in seconds from the first À partir des Temps en Secondes depuis (s) Trace statement derniers (s) le précédent chargement From Last Time in seconds from the (s) previous Trace statement 3 Arborescence du contrôle Nom Description ID de ID du controle contrôle Type Type précis du Control Taille du rendu Taille du viewstate Control Hierarchy Value Description Control ID The ID for the control Type La Taille en octets du rendu (y compris les enfants) La Taille en octets du viewstate (sans les enfants) The fully qualified type of the control The size of the control's Render Size rendering in bytes including children ViewState Size Collection des Cookies Nom Description The size of the control's viewstate in bytes excluding children Cookies Collection Value Description Nom Le Nom du Cookie La Valeur du Cookie, ou de la sousValeur Valeur si c'est une valeur multiple Taille La Taille du Cookie rendu en Octets Name The name of the cookie The value of the cookie, or subValue keys/values if multi- valued The size of the cookie rendering in Size Bytes Collection des Entêtes Nom Description Headers Collection Value Description Nom Le Nom de l'Entête Valeur La Valeur de l'Entête Name The name of the header Value The value of the header Variables serveur Nom Description Nom Le Nom de la Variable Serveur Valeur La Valeur de la Variable Serveur Server Variables Value Description Name The name of the server variable Value The value of the server variable Vous devez vous demander comment obtenir l'affichage de cette Trace, et bien nous allons voir les différentes méthodes possibles pour les obtenir et les sorties possibles pour cette trace. 4 Configuration pour la Trace Pour activer la Trace sur l'application WEB voulue et la visionner, il existe 2 méthodes : • • Contrôler la Trace via la page Trace.axd Contrôler la Trace Uniquement dans le fichier en cours de visualisation Le fichier TRACE.AXD Cette visualisation se fait avec un paramétrage du fichier WEB.CONFIG de l'application Web. Ce fichier va indiquer à l'application Web que dans chaque page aspx qu'il rencontrera, il devra stocker tout le débug généré en mémoire afin de pouvoir le visionner avec la page Trace.axd. Dans le WEB.CONFIG on paramètre le bloc TRACE comme suit : <configuration> <system.web> <trace enabled="true" requestLimit="50"> </trace> <system.web> </configuration> pageOutput="true" localOnly="true" traceMode="SortByTime" Attention : Si le débug est désactivé dans le Web.config (enabled="false") la page trace.axd ne répondra pas du tout et provoquera une erreur. • La variable pageOutput indique si on veut afficher la trace dans les pages ASPX courantes, ainsi si cette variable est à true, toutes les pages aspx auront le debug en bas de page (sauf si on spécifie dans l'entête de la page Trace="false"), valeur par défaut : false. • La variable localOnly permet d'interdire la visibilité de cette trace par un navigateur hormis si celui-ci est sur le serveur IIS lui- même (par défaut valeur à true ). • La variable traceMode permet de donner le classement de cette affichage, par ordre chronologique (SortByTime : par défaut) ou par ordre de catégorie (SortByCategory). • La variable requestLimit impose le nombre de trace qui est conservé en mémoire (par défaut 10). 5 On a plus qu'à aller avec son navigateur à l'adresse suivante, et contrôler les traces mémorisées : • http://localhost/Monapplication/trace.axd On obtient alors l'exemple ci-dessous : A partir de cette page, on choisit la Trace qui nous intéresse (selon la page aspx, l'heure, ...) et on clique dessus, on a alors l'exemple suivant : 6 Dans le fichier ASPX Courant Dans l'entête de la page ASPX, on peut ajouter la variable TRACE à true, comme suit : … <%@ Page ..... Trace="True" %> …. Cette trace ne sera active que dans la page courante ou la variable est à la valeur true . Cette activation passe par dessus celle du Web.Config (pageOutput="false"). En effet, la page aspx au chargement regarde si cette variable existe, si ce n'est pas le cas, il regardera la valeur de la variable pageOutput du Web.Config.<BR> L'inverse est aussi vrai, dans le cas où l'on spécifie Trace="false" dans l'entête, le serveur ignorera la variable du Web.Config pour cette page. On obtient alors l'exemple ci-dessous : 7 Conclusion Une version de cet article est téléchargeable ici : • Utilisation de la Trace en ASP.NET (http://fromelard.free.fr/Scripts/ASPNET_DebugTrace/) Cet article nous montre donc comment utiliser la Trace et donc une partie des outils de débuggage disponibles dans le framework .net, ce qui n'existait pas du tout dans les précédents langages orientés WEB (ASP par exemple). Il faut aussi préciser que les messages ajoutés dans le code source de son application n'ont pas besoin d'être supprimé lors du passage de l'application en production. Ainsi en cas de problème ou lors d'un contrôle des états ou valeurs de variables, il suffit d'activer la trace soit sur la page que l'on souhaite tester (un peu dangereux, car les autres utilisateurs verront aussi cette trace), soit en activant la sortie dans le fichier Trace.axd (solution plus propre). En vous souhaitant de bons projets de développement. Romelard Fabrice (alias F___) 8