asp - asp.net - aspcode.it

COMMUNITY - Login
 Username:
 
 Password:
 
Voglio registrarmi!
Password dimenticata?
 Utenti on-line: 0
 Ospiti on-line: 12673
ASPCode.it - Store

  > > Articoli

Il Tracing in ASP.NET

Data di pubblicazione: 23/10/2006        Voto della community: 4,85 (Votanti: 16)

Tra le tante novità introdotte da ASP.NET indubbiamente il Tracing è una di quelle più apprezzate dalla comunità di sviluppatori di applicazioni web. In passato gli sviluppatori ASP erano costretti ad utilizzare l'istruzione "Response.Write" per eseguire il debug delle proprie applicazioni, "sporcando" inevitabilmente il codice e correndo il rischio di visualizzare informazioni sensibili ad occhi indiscreti in fase di rilascio dell'applicazione stessa. Grazie ad ASP.NET tutto questo oggi non è più un problema. Il Tracing infatti permette in maniera molto semplice di monitorare lo stato delle proprie pagine web e di evidenziare eventuali anomalie del codice.
Vediamo come attivare il Tracing in ASP.NET. Il Tracing pùò essere attivato a due Livelli:
  1. A livello di pagina;
  2. A livello di applicazione.

Tracing a livello di pagina

Per attivare l'analisi a livello di pagina è necessario aggiungere l'attributo Trace nella direttiva Page di primo livello e impostarne il valore a "true", come riportato di seguito:

<%@ Page Language="vb" Trace="true" %>

In questa modalità, ASP.NET inserisce l'output del Trace in fondo alla pagina in questione. L'output viene visualizzato a tutti i client (browser) che richiedono tale pagina. Poichè alcune informazioni visualizzate dal Trace sono sensibili (ad esempio il Trace visualizza i valori delle variabili server), è consigliabile utilizzare questa modalità in fase di debug dell'applicazione (non in produzione), in modo da evitare possibili problemi di protezione.
A questo livello è possibile anche utilizzare l'attributo TraceMode (opzionale) nella direttiva Page. Tramite l'attributo TraceMode è possibile specificare l'ordine nel quale organizzare i messaggi del Tracing. TraceMode può essere settato nei due seguenti valori:
  1. SortByTime: in questo caso le richieste vengono ordinate in base alla data e ora di elaborazione;
  2. SortByCategory: in questo caso le richieste vengono ordinate in base alla categoria di cui fanno parte.

Tracing a livello di applicazione

Oltre al Tracing a livello di pagina, ASP.NET offre la funzionalità del Tracing a livello di applicazione. Per attivare il Tracing a livello di applicazione è necessario inserire la seguente istruzione nel file web.config nella directory principale dell'applicazione.

<configuration>
  <system.web>
    <trace enabled="true" />
  </system.web>
</configuration>

A tal proposito è bene ricordare che il file di configurazione è case-sensitive. Questo significa che le istruzioni scritte nel file web.config devono rispettare le maiuscole e le minuscole, pena un funzionamento errato dell'applicazione.
Inserendo questa istruzione nel file di configurazione, sarà possibile consultare le statistiche delle richieste archiviate sul server aprendo la pagina speciale trace.axd, accessibile all'URL http://www.miositoweb.com/trace.axd.
Questa pagina visualizza:
  • un link "cancella analisi corrente" che permette di resettare/azzerare le richieste memorizzate dal trace (in alto a destra);
  • la directory fisica dell'applicazione web (in alto a destra sotto il link di reset);
  • l'elenco delle richieste inviate all'applicazione.
Per ogni riga di richiesta vengono inoltre visualizzate le seguenti informazioni:
  • data e ora della richiesta
  • pagina richiesta
  • codice dello stato
  • il tipo di richiesta (GET o POST)
  • link "Visualizza dettagli" della richiesta
Il link "Visualizza dettagli" porta a sua volta ad una pagina che visualizza informazioni dettagliate per ogni richiesta, che possono essere sintetizzate come segue:
  • Valore ID di Sessione
  • Dati della richiesta (tipo, data e ora, stato)
  • Codifica della risposta
  • Sequenza degli eventi della pagina (Begin Init, End Init etc.) e loro durata
  • Gerarchia dei controlli contenuti nella pagina richiesta
  • Stato della sessione
  • Valori Cookies
  • Valori Headers
  • Variabili server
A livello di applicazione è possibile anche rendere disponibili le informazioni del Trace in tutte le pagine web richieste (come avviene attivando il Trace a livello di pagina), oltre che renderle disponibili tramite trace.axd. Per attivare questa funzionalità è necessario aggiungere alla sezione Trace del file di configurazione l'attributo pageOutput e settarne il valore a "true" (per default il valore è "false") come segue:

<configuration>
  <system.web>
    <trace
    enabled="true"
    pageOutput="true" />
  </system.web>
</configuration>

Altri attributi supportati dalla sezione Trace di web.config sono:
  • requestLimit: specifica il numero massimo di richieste che vengono archiviate sul server web. Il default è di 10 richieste
  • localOnly: permette di impostare il tracing come attivo solo se visualizzato da un browser appartenente alla rete locale
  • traceMode: permette di ordinare le richieste in base a data e ora di elaborazione o in base alla categoria di cui fanno parte (rispettivamente SortByTime e SortByCategory)
Per esempio, la configurazione seguente raccoglie le informazioni del Trace fino a 50 richieste, impedisce la visualizzazione delle informazioni nelle pagine web (a meno che non sia abilitato esplicitamente il trace a livello di pagina), visualizza i messaggi in ordine di categoria e imposta il tracing come attivo solo per i client appartenenti alla rete locale:

<configuration>
  <system.web>
    <trace
      enabled="true"
      traceMode="SortByCategory"
      requestLimit="50"
      pageOutput="false"
      localOnly="true"
    />
  </system.web>
</configuration>

Classe TraceContext

La classe Page espone la proprietà di sola lettura Trace (di tipo System.Web.TraceContext). Tramite questa proprietà gli sviluppatori possono inserire informazioni personalizzate nell'output del Trace utilizzando i seguenti metodi:
  • Write
  • Warn (come Write, con la differenza che il testo compare in rosso)
Questi due metodi hanno tre overloads:
  • Messaggio
  • Categoria e Messaggio
  • Categoria, Messaggio e eccezione
Di solito il metodo Write viene utilizzato per informazioni di debug (segnalazione di determinate operazioni come ad esempio l'apertura di una connessione al database). Il metodo Warn invece viene utilizzato per la segnalazione di eventuali errori ed è consigliabile utilizzarlo nei blocchi Try ... Catch utilizzando il terzo parametro di tipo System.Exception.

Esempi:

'Trace(Messaggio)
Trace.Write("Apertura Database...")
Trace.Warn("L'array è nullo!")

'Trace(Categoria, Messaggio)
Trace.Write("Custom Trace", "Apertura Database...")
Trace.Warn("Custom Trace","L'array è nullo")

E' importante sottolineare che quando il Tracing è disabilitato queste istruzioni vengono ignorate. Ciò permette di mantenere queste istruzioni anche nel codice di produzione e di eseguirle condizionalmente all'attivazione del Trace.

Un'altra proprietà esposta dalla classe Page è Trace.IsEnabled (di tipo Boolean), la quale indica se il Trace è attivo o meno. Essa ritorna molto utile quando uno sviluppatore ha la necessità di eseguire del codice supplementare e visualizzarne le informazioni nell'output del Trace tramite Trace.Write o Trace.Warn.
Prendiamo ad esempio il codice seguente:

If Trace.IsEnabled Then
  For i=0 To ds.Tables("Categorie").Rows.Count-1
    Trace.Write("Prodotti", ds.Tables("Categorie").Rows(i)(0).ToString())
  Next
End if

In questo modo viene prima controllato che il Trace sia attivo. Solo in caso positivo viene eseguito il ciclo For ... Next e visualizzato l'output nel Trace.

Conclusioni

Sicuramente il servizio di Tracing di ASP.NET rappresenta per gli sviluppatori web uno strumento molto utile e potente che facilita le fasi delicate del ciclo di produzione e che permette quindi di aumentare considerevolmente la produttività e di diminuire i tempi di rilascio delle applicazioni web.




Utenti connessi: 12673