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