Una delle tante risorse messe a disposizione da ASP .NET per effettuare debug di applicazioni web è il meccanismo di Tracing.
Questa risorsa permette allo sviluppatore di monitorare molto semplicemente la situazione delle proprie pagine, ed evidenziare eventuali anomalie nel codice.
Il Trace si può abilitare a livello di pagina aggiungendo l'attributo Trace=true nella direttiva @PAGE della pagina aspx (visibile quando viene richiesta la pagina), oppure è possibile attivarlo a livello di applicazione modificando l'attributo enabled all'interno di questo tag nel file web.config:
<trace enabled="true"
requestLimit="10"
pageOutput="false"
traceMode="SortByTime"
localOnly="true"
/>
In questo modo, dopo aver richiesto una o più pagine, si potrà richiamare dal browser il file trace.axd che mostrerà la situzione dell' applicazione, evidenziando in sezioni separate informazioni:
generiche sull' applicazione attraverso l'analisi degli eventi del Global.asax (TraceInformation),
sui controlli delle pagina aspx (Control Tree),
sui cookies (cookies collection)
sul server dove l'applicazione risiede (Server Variables).
E' inoltre possibile, con poche righe di codice, estendere questa configurazione aggiungendo delle voci personalizzate al listato del tracing.
//Da una pagina aspx
Page.Trace.Write("MyTrace","Inizio accesso al database.");
//Dal file Global.asax negli eventi Application_Start, BeginRequest, EndRequest ecc..
Context.Trace.Write("MyTrace","Inizio applicazione.");
Nel primo caso viene utilizzata la proprietà Trace dell'oggetto Page. Tale proprietà restituisce un oggetto TraceContext che attraverso il metodo Write è in grado di scrivere informazioni personalizzate nel listato di output.
Nel secondo caso invece viene utilizzato la proprietà Context dell'oggetto HTTPApplication con le medesime caratteristiche e funzionalità.
Come si può notare, da ogni contesto della web-application si ha la possibilità di aggiungere messaggi e informazioni utili per l'attività di debugging dello sviluppatore, o semplicemente per evidenziare come vengono annidati i controlli o usercontrol all'interno delle pagine.