Cenni preliminari sull'analisi di ASP.NET

Aggiornamento: novembre 2007

L'analisi di ASP.NET consente di visualizzare informazioni diagnostiche su una singola richiesta relativa a una pagina ASP.NET, La funzione di analisi ASP.NET consente di seguire il percorso di esecuzione di una pagina, visualizzare informazioni diagnostiche in fase di esecuzione ed eseguire il debug dell'applicazione. La funzione può essere integrata con l'analisi a livello di sistema per offrire più livelli di output di analisi nelle applicazioni distribuite e a più livelli.

Vengono illustrati i seguenti argomenti:

  • Funzionalità

  • Informazioni di supporto

  • Esempi di codice

  • Riferimento alle classi

Funzionalità

Di seguito sono riportate le funzionalità dell'analisi ASP.NET:

  • Debugging statments    È possibile scrivere istruzioni di debug direttamente nel codice, senza doverle rimuovere dall'applicazione quando questa viene distribuita nei server di produzione. È anche possibile scrivere variabili o strutture in una pagina e analizzare il percorso di esecuzione della pagina o dell'applicazione.

  • Integrated tracing functionality   È possibile indirizzare i messaggi generati dalla classe System.Diagnostics.Trace all'output di analisi ASP.NET e i messaggi generati dall'analisi ASP.NET a System.Diagnostics.Trace. È anche possibile inoltrare gli eventi della strumentazione ASP.NET a System.Diagnostics.Trace. Per ulteriori informazioni, vedere Procedura dettagliata: integrazione dell'analisi ASP.NET all'analisi System.Diagnostics.

  • Programmatic access to trace messages   È possibile accedere ai messaggi di analisi e modificarli dal codice per un controllo più accurato del formato di tali messaggi o per un'elaborazione aggiuntiva necessaria.

  • Application-level tracing   L'opzione di analisi a livello di applicazione consente di visualizzare i dati di analisi più recenti disponibili senza riavviare una sessione di analisi né aumentare il volume dei dati di analisi da archiviare nel server. I dati di analisi più recenti vengono visualizzati, mentre quelli meno recenti vengono eliminati.

Torna all'inizio

Informazioni di supporto

L'analisi consente di aggiungere informazioni diagnostiche e messaggi personalizzati all'output della pagina e inviare tali informazioni al browser richiedente. Facoltativamente è possibile visualizzare queste informazioni in un apposito visualizzatore distinto, Trace.axd, in cui vengono visualizzate le informazioni di analisi per ogni pagina di un'applicazione Web ASP.NET. Tali informazioni consentono di analizzare errori o risultati indesiderati mentre in ASP.NET viene elaborata una richiesta di pagina.

È possibile configurare pagine singole per la visualizzazione di informazioni di analisi. In alternativa, è possibile configurare il file Web.config dell'applicazione in modo che le informazioni di analisi vengano visualizzate in tutte le pagine, a meno che la funzione di analisi non venga esplicitamente disattivata in una pagina. L'impostazione dell'analisi a livello di applicazione è utile in quanto la relativa attivazione e disattivazione non richiede alcuna modifica alle singole pagine.

Le istruzioni di analisi vengono elaborate e visualizzate solo quando è attivata la funzione di analisi. È possibile decidere se visualizzare l'analisi in una pagina, in un visualizzatore di analisi o in entrambi. Per informazioni sull'attivazione dell'analisi per una pagina, vedere Procedura: attivare l'analisi per una pagina ASP.NET. Per informazioni sull'attivazione dell'analisi per un'applicazione, vedere Procedura: attivare l'analisi per un'applicazione ASP.NET.

Analisi di ASP.NET a livello di applicazione

Per attivare l'analisi a livello di applicazione, utilizzare l'elemento trace del file Web.config. Quando si attiva la funzione di analisi a livello di applicazione, vengono raccolte informazioni di analisi per ogni richiesta all'applicazione, fino a raggiungere il numero massimo di richieste specificato. Il numero predefinito di richieste è 10. Per impostazione predefinita, quando il visualizzatore di analisi raggiunge il limite di richieste, l'archiviazione di queste ultime viene interrotta. È possibile configurare l'analisi in modo tale da archiviare i dati meno recenti ed eliminare quelli più recenti o viceversa.

Nota:

Quando si attiva l'analisi per l'intera applicazione nel file Web.config, vengono raccolte ed elaborate le informazioni di analisi per ogni pagina dell'applicazione. Per eseguire l'override delle impostazioni a livello di applicazione, impostare l'attributo Trace nella direttiva @ Page della pagina su false. Qualsiasi istruzione Write o Warn inserita nel codice di una pagina verrà archiviata e restituita esclusivamente al visualizzatore di analisi.

Visualizzazione delle informazioni di analisi

È possibile visualizzare le informazioni di analisi nella parte inferiore delle singole pagine. In alternativa, è possibile utilizzare il visualizzatore delle informazioni di analisi (Trace.axd) per visualizzare le informazioni raccolte e memorizzate nella cache da ASP.NET quando l'analisi viene attivata. Per informazioni dettagliate sulla visualizzazione dell'analisi, vedere Lettura delle informazioni di analisi di ASP.NET più avanti in questo argomento.

Se si desidera visualizzare le informazioni di analisi alla fine della pagina a cui sono associate, impostare l'attributo PageOutput dell'elemento trace su true. Se si attiva l'analisi a livello di applicazione, ma si desidera che per alcune pagine non vengano visualizzate le informazioni di analisi, è possibile impostare l'attributo Trace nella direttiva @ Page di tali pagine su false. Per ulteriori informazioni sulla configurazione di un'applicazione ASP.NET, vedere Cenni preliminari sulla configurazione di ASP.NET.

Per impostazione predefinita, l'analisi a livello di applicazione può essere visualizzata solo sul computer server Web locale. Per rendere visibili le informazioni di analisi a livello di applicazione per i computer remoti, è possibile impostare l'attributo LocalOnly dell'elemento trace su false.

Nota:

Per ragioni di protezione, utilizzare la funzionalità di analisi remota solo durante lo sviluppo o la distribuzione di un'applicazione Web. Accertarsi che venga disattivata prima di trasferire l'applicazione ai server Web di produzione. A tal proposito, impostare l'attributo LocalOnly su true nel file Web.config.

Nell'esempio seguente viene illustrata una configurazione di analisi di un'applicazione che raccoglie informazioni per un massimo di 40 richieste. Viene inoltre consentito ai browser di computer diversi dal server di visualizzare le informazioni raccolte tramite l'apposito visualizzatore.

<configuration>
  <system.web>
    <trace enabled="true" requestLimit="40" localOnly="false" />
  </system.web>
</configuration>

Scrittura di messaggi di analisi ASP.NET personalizzati

È possibile aggiungere informazioni di analisi personalizzate alla visualizzazione dell'analisi in una pagina ASP.NET o al log di analisi. Le informazioni scritte nel log di analisi possono essere visualizzate mediante l'apposito visualizzatore. Per ulteriori informazioni, vedere Procedura: visualizzare le informazioni di analisi di ASP.NET con il visualizzatore di analisi.

È possibile scrivere informazioni di analisi utilizzando il metodo Warn o Write della classe TraceContext. La differenza tra i due metodi è che un messaggio scritto con il metodo Warn viene visualizzato in rosso.

Nell'esempio riportato di seguito viene illustrato come utilizzare la classe TraceContext per visualizzare le informazioni di analisi alla fine di una pagina ASP.NET. Per ogni controllo LinkButton che ha causato il postback viene generata un'eccezione differente. Il messaggio di errore utilizzato per inizializzare l'istanza ArgumentException o InvalidOperationException viene visualizzato nel log di analisi.

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<script >

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

    Try
      If (IsPostBack) Then

        Select Case Request.Form("__EVENTTARGET")
          Case "WarnLink"
            Throw New ArgumentException("Trace warn.")
          Case "WriteLink"
            Throw New InvalidOperationException("Trace write.")
          Case Else
            Throw New ArgumentException("General exception.")
        End Select  
      End If
    Catch ae As ArgumentException
      Trace.Warn("Exception Handling", "Warning: Page_Load.", ae)
    Catch ioe As InvalidOperationException
      Trace.Write("Exception Handling", "Exception: Page_Load.", ioe)
    End Try
  End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
    <title>Trace Example</title>
</head>
<body>
    <form id="form1" >
    <div>
      <asp:LinkButton id="WriteLink" 
                      
                      text="Generate Trace Write" />
      <asp:LinkButton id="WarnLink"
                      
                      text="Generate Trace Warn" />
    </div>
    </form>
</body>
</html>
<%@ Page Language="C#" Trace="true"  %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<script >
void Page_Load(object sender, EventArgs e)
{
    try {
      if (IsPostBack)
      {

        switch (Request.Form["__EVENTTARGET"])
        {
          case "WarnLink":
            throw new ArgumentException("Trace warn.");
            break;
          case "WriteLink":
            throw new InvalidOperationException("Trace write.");
            break;
          default:
            throw new ArgumentException("General exception.");
            break;          
        }
      }
    }
    catch (ArgumentException ae) {    
        Trace.Warn("Exception Handling", "Warning: Page_Load.", ae);
    }
    catch (InvalidOperationException ioe) {    
        Trace.Write("Exception Handling", "Exception: Page_Load.", ioe);
    }
}

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
    <title>Trace Example</title>
</head>
<body>
    <form id="form1" >
    <div>
      <asp:LinkButton id="WriteLink" 
                      
                      text="Generate Trace Write" />
      <asp:LinkButton id="WarnLink"
                      
                      text="Generate Trace Warn" />
    </div>
    </form>
</body>
</html>

Lettura delle informazioni di analisi di ASP.NET

È possibile visualizzare le informazioni di analisi aggiunte alla fine di una pagina ASP.NET o nell'apposito visualizzatore. In entrambi i casi le informazioni visualizzate saranno identiche. ASP.NET organizza le informazioni di analisi in una serie di tabelle. Per informazioni sulla visualizzazione delle informazioni di analisi in una pagina, vedere Procedura: attivare l'analisi per una pagina ASP.NET. Per informazioni sulla visualizzazione delle informazioni di analisi nell'apposito visualizzatore, vedere Procedura: visualizzare le informazioni di analisi di ASP.NET con il visualizzatore di analisi.

Le informazioni di analisi vengono visualizzate nell'ordine indicato di seguito.

Dettagli richiesta

Nella sezione Dettagli richiesta vengono visualizzate informazioni generali sulla richiesta e sulla risposta corrente.

Value

Descrizione

ID sessione

L'identificazione di sessione per la richiesta specificata.

Data e ora della richiesta

Il momento in cui è stata eseguita la richiesta.

Codifica richiesta

La codifica caratteri per la richiesta.

Tipo richiesta

Il metodo HTTP (GET o POST).

Codice stato

Il valore del codice di stato associato alla risposta. Per ulteriori informazioni, vedere la specifica RFC 2616 nel sito Web World Wide Web Consortium (W3C) (informazioni in lingua inglese).

Codifica risposta

La codifica caratteri per la risposta.

Informazioni analisi

Nella sezione Informazioni analisi viene visualizzato il flusso degli eventi a livello di pagina. Se sono stati creati messaggi di analisi personalizzati, anche questi ultimi vengono visualizzati nella sezione Informazioni analisi.

Value

Descrizione

Categoria

La categoria di analisi personalizzata specificata in una chiamata al metodo Warn o Write, se disponibile.

Messaggio

Il messaggio di analisi personalizzato specificato in un metodo Warn o Write, se disponibile.

Dai primi

Il tempo trascorso, in secondi, dal momento in cui è stato elaborato il primo messaggio di analisi. Il primo messaggio di analisi viene visualizzato all'inizio dell'elenco.

Dagli ultimi

Il tempo trascorso, in secondi, tra l'elaborazione del messaggio di analisi corrente e quella del messaggio di analisi precedente.

Struttura controllo

Nella sezione Struttura controllo vengono visualizzate le informazioni sui controlli server ASP.NET creati nella pagina.

Value

Descrizione

ID controllo

L'identificazione del controllo. Se non è stata specificata una proprietà ID per il controllo, ASP.NET genera un oggetto ID utilizzando la proprietà UniqueID.

Type

Il nome di tipo completo del controllo.

Dimensione rendering in byte

La dimensione in byte del controllo di cui è stato eseguito il rendering, inclusi i controlli figlio. Rappresenta la dimensione dell'effettivo formato HTML, XML o di un altro formato inviato al browser.

Dimensione Viewstate in byte

La dimensione in byte dello stato di visualizzazione del controllo, esclusi i controlli figlio. Per ulteriori informazioni, vedere la classe Cenni preliminari sulla gestione dello stato ASP.NET.

Dimensione ControlState in byte

La dimensione in byte dello stato del controllo, esclusi i controlli figlio. Per ulteriori informazioni, vedere la classe Cenni preliminari sulla gestione dello stato ASP.NET.

Stato sessione

Nella sezione Stato sessione vengono visualizzate le informazioni sugli eventuali valori archiviati nello stato sessione. Per ulteriori informazioni, vedere la classe Cenni preliminare sullo stato della sessione ASP.NET.

Value

Descrizione

Chiave sessione

La chiave degli eventuali dati archiviati nello stato sessione.

Type

Il tipo completo dell'oggetto in cui vengono archiviati i dati.

Value

Una rappresentazione di stringa degli eventuali dati archiviati nello stato sessione.

Stato applicazione

Nella sezione Stato applicazione vengono visualizzate informazioni sugli eventuali valori archiviati nello stato applicazione. Per ulteriori informazioni, vedere la classe Cenni preliminari sullo stato delle applicazioni ASP.NET.

Value

Descrizione

Chiave applicazione

La chiave degli eventuali dati archiviati nello stato applicazione.

Type

Il tipo completo dell'oggetto in cui vengono archiviati i dati.

Value

Una rappresentazione di stringa degli eventuali dati archiviati nello stato dell'applicazione.

Insieme Cookies

Nelle sezioni Cookie di richiesta e Cookie di risposta vengono visualizzate le informazioni sui cookie passati tra il browser e il server a ogni richiesta e risposta. In questa sezione vengono visualizzati sia i cookie permanenti che quelli di sessione. In ASP.NET alcuni cookie vengono creati automaticamente, ad esempio quelli per lo stato sessione basato su cookie e per l'autenticazione basata su form. Per ulteriori informazioni, vedere Cenni preliminari sui cookie ASP.NET.

Value

Descrizione

Name

Il nome del cookie.

Value

Il valore del cookie o delle sottochiavi e dei valori in caso di cookie multivalore.

Size

La dimensione in byte del cookie.

Insieme Headers

Nella sezione Insieme Headers vengono visualizzate informazioni sulle coppie nome/valore dell'intestazione dei messaggi di richiesta e di risposta, che specificano il corpo del messaggio o la risorsa richiesta. Le informazioni sull'intestazione vengono utilizzate per controllare la modalità di elaborazione dei messaggi di richiesta e di creazione dei messaggi di risposta. Per ulteriori informazioni sulle intestazioni HTTP, vedere la specifica RFC 2616 sul sito Web di World Wide Web Consortium (W3C) (informazioni in lingua inglese).

Value

Descrizione

Name

Il nome dell'intestazione.

Value

Il valore dell'intestazione.

Insieme Form

Nella sezione Insieme Form vengono visualizzate le coppie nome/valore che indicano i valori degli elementi form (valori di controllo) inviati in una richiesta durante un'operazione POST (postback).

Value

Descrizione

Name

Il nome della variabile form.

Value

Il valore della variabile form.

Insieme Querystring

Nella sezione Insieme Querystring vengono visualizzati i valori passati nell'URL. In un URL le informazioni sulle stringhe di query sono separate dalle informazioni sul percorso mediante un punto interrogativo (?). In caso di stringhe di query con più elementi, questi vengono separati mediante una e commerciale (&). Le coppie nome/valore delle stringhe di query sono separate da un segno di uguale (=). La proprietà QueryString dell'oggetto HttpRequest restituisce una classe NameValueCollection di variabili di stringhe di query.

Value

Descrizione

Name

Il nome della variabile della stringa di query.

Value

Il valore della variabile della stringa di query.

Variabili server

Nella sezione Variabili server viene visualizzato un insieme di variabili di ambiente relative al server, oltre a informazioni sull'intestazione di richiesta. La proprietà ServerVariables dell'oggetto HttpRequest restituisce una classe NameValueCollection di variabili server.

Value

Descrizione

Name

Il nome della variabile server.

Value

Il valore della variabile server.

Torna all'inizio

Analisi di ASP.NET e analisi diagnostica

Durante l'analisi di ASP.NET vengono scritti messaggi visualizzati nelle pagine Web ASP.NET e nel visualizzatore di analisi ASP.NET (Trace.axd). La classe System.Diagnostics.Trace viene invece utilizzata per scrivere messaggi nell'output di analisi .NET Framework standard, generalmente una finestra della console. Per tenere traccia con maggiore facilità dell'interazione delle pagine Web ASP.NET con gli oggetti business e altri componenti, è possibile integrare l'output di analisi ASP.NET con l'analisi System.Diagnostics. Sarà quindi possibile indirizzare tutti i messaggi di analisi a uno di questi output.

Un comune scenario di utilizzo dell'analisi di ASP.NET e di System.Diagnostics.Trace è dato dalle pagine Web che utilizzano oggetti business di livello intermedio per interagire con dati e regole business. È anche possibile utilizzare l'analisi System.Diagnostics.Trace per le pagine che utilizzano servizi Enterprise, ad esempio transazioni e code. In queste situazioni, i componenti business ed Enterprise giocano un ruolo fondamentale per una corretta esecuzione della pagina. Possono inoltre rivelarsi utili per l'analisi dell'applicazione, per controllare il flusso di esecuzione attraverso i diversi livelli utilizzando un solo output di analisi. Per ulteriori informazioni, vedere Procedura: attivare l'analisi per un'applicazione ASP.NET.

Attributi della configurazione di analisi

Nella tabella riportata di seguito vengono illustrati gli attributi utilizzabili per modificare il comportamento dell'analisi a livello di applicazione nell'elemento trace del file Web.config.

Attributo

Descrizione

Enabled

true per attivare l'analisi per l'applicazione; in caso contrario false. Il valore predefinito è false. È possibile eseguire l'override di questa impostazione per singole pagine impostando l'attributo Trace nella direttiva @ Page di una pagina su true o false.

PageOutput

true per visualizzare l'analisi sia nelle pagine sia nel visualizzatore di analisi (Trace.axd); in caso contrario false. Il valore predefinito è false.

Nota:
Questa impostazione non ha effetto sulle pagine singole per cui è attiva la funzione di analisi.

RequestLimit

Numero di richieste di analisi da memorizzare nel server. Il valore predefinito è 10.

TraceMode

Ordine in cui vengono visualizzate le informazioni di analisi. Impostare su SortByTime per eseguire l'ordinamento in base all'ordine di elaborazione delle informazioni. Impostare su SortByCategory per ordinare alfabeticamente in base a una categoria definita dall'utente. Il valore predefinito è SortByTime.

LocalOnly

true per rendere disponibile il visualizzatore di analisi (Trace.axd) solo sul server Web host; in caso contrario false. Il valore predefinito è true.

MostRecent

true per visualizzare le informazioni di analisi più recenti come output di analisi; in caso contrario, false. Se il valore è false, in caso di superamento del valore requestLimit le nuove richieste non verranno archiviate. L'impostazione predefinita è false.

Nota:
I dati di analisi che superano il limite definito dall'attributo requestLimit vengono eliminati a favore dei dati più recenti solo quando mostRecent è true.

Esempi di codice

Argomenti relativi alle procedure e alle procedure dettagliate

Procedura: attivare l'analisi per una pagina ASP.NET

Procedura: attivare l'analisi per un'applicazione ASP.NET

Procedura: visualizzare le informazioni di analisi di ASP.NET con il visualizzatore di analisi

Procedura dettagliata: integrazione dell'analisi ASP.NET all'analisi System.Diagnostics

Torna all'inizio

Riferimento alle classi

Classe

Descrizione

System.Diagnostics.Trace

Classe principale per l'implementazione dell'analisi.

TraceContext

Vengono acquisite e presentate informazioni dettagliate sull'esecuzione di una richiesta Web.

Torna all'inizio

Vedere anche

Concetti

Prestazioni, risoluzione dei problemi e debug

Riferimenti

Torna all'inizio