Scrittura di messaggi di analisi

In ASP.NET è incluso un oggetto Trace (simile agli oggetti Response, Request e Context), che consente di scrivere istruzioni di debug che vengono visualizzate quando si attiva la funzione di analisi per una pagina o per l'intera applicazione.

La classe TraceContext viene utilizzata per archiviare le informazioni riguardanti una richiesta, la relativa gerarchia di controllo e le informazioni di analisi. Queste ultime riportano i dettagli di alcuni passaggi del ciclo di vita di una richiesta di una pagina e le eventuali note personalizzate che si è scelto di inserire. Dalle pagine Web Form è possibile accedere alla classe TraceContext tramite la proprietà Page.Trace. Quando si creano controlli server ASP.NET personalizzati tramite l'estensione della classe Control, sarà possibile accedere alla classe TraceContext tramite la proprietà Control.Context utilizzando la sintassi Control.Context.Trace. Se tuttavia si desidera includere istruzioni di analisi da file che non siano una pagina o un controllo, quali ad esempio il file Global.asax dell'applicazione o una classe non derivata dall'interfaccia IHttpHandler, sarà necessario accedere alla classe TraceContext tramite la proprietà HttpContext.Current. In questo caso utilizzare la sintassi HttpContext.Current.Trace.

La classe TraceContext fornisce due metodi, Write e Warn, che consentono di scrivere istruzioni nel log dell'analisi. Ognuno è un metodo di overload e consente di specificare una categoria di analisi, un messaggio di testo e informazioni di errore facoltative. L'unica differenza è che il metodo Warn visualizza il proprio testo in rosso.

Nota   Quando si specifica una categoria in una chiamata al metodo Write o Warn, è possibile utilizzare questa categoria per ordinare le istruzioni di analisi. Per ulteriori informazioni, vedere Attivazione dell'analisi per una pagina e Attivazione dell'analisi a livello di applicazione.

Ognuno di questi è un metodo di overload e si presenta in tre versioni. Se si inserisce un solo argomento di tipo stringa quando si chiama il metodo Warn o Write, viene considerato come un messaggio. Se si inseriscono due argomenti, il primo viene considerato come una categoria e lo si può usare per stabilire l'ordine di visualizzazione dei messaggi nella tabella Informazioni analisi, visualizzata quando viene attivata la funzione di analisi. Il terzo argomento è di tipo Exception e contiene informazioni di errore relative all'eventuale richiesta.

Queste istruzioni di analisi, assieme al resto delle informazioni di analisi, vengono visualizzate in un browser richiedente, quando si attiva la funzione di analisi per la pagina o l'intera applicazione.

Nota   Ricordarsi di disattivare l'analisi per le pagine e le applicazioni prima di eseguirne il porting nei server di produzione.

Nella schermata che segue sono mostrate le istruzioni di analisi personalizzata, visualizzate nella tabella Informazioni analisi, quando è attivata la funzione di analisi per la pagina. Il metodo Warn viene utilizzato per generare il primo messaggio in testo rosso, con una categoria Render e un messaggio Text is about to render!. Il metodo Write viene utilizzato per generare il secondo messaggio personalizzato con la stessa categoria, ma con il testo Text finished rendering!.

Istruzioni di analisi in una pagina

Per scrivere messaggi di analisi personalizzati nel log dell'analisi da una pagina

  1. Nel blocco di dichiarazione di codice o nella classe di codice sottostante della pagina chiamare uno dei metodi TraceContext tramite la proprietà Trace.

  2. Specificare il parametro facoltativo category per l'istruzione di analisi. È possibile utilizzare questa categoria per ordinare le istruzioni di analisi quando vengono visualizzate.

  3. Specificare il parametro facoltativo message per l'istruzione di analisi. Può essere una stringa o un metodo.

  4. Specificare il parametro facoltativo errorInfo che contiene le informazioni su qualsiasi errore nella pagina.

    Nell'esempio che segue del metodo TraceContext.Warn vengono definiti una categoria Render e un messaggio di analisi Text is about to render.

    Trace.Warn("Render", "Text is about to render.");
    [Visual Basic]
    Trace.Warn("Render", "Text is about to render.")
    

Per scrivere messaggi di analisi personalizzati nel log dell'analisi da un controllo server personalizzato

  1. Nel codice del controllo server chiamare uno dei metodi TraceContext tramite la proprietà Context.

  2. Specificare il parametro facoltativo category per l'istruzione di analisi. È possibile utilizzare questa categoria per ordinare le istruzioni di analisi quando vengono visualizzate.

  3. Specificare il parametro facoltativo message per l'istruzione di analisi.

  4. Specificare il parametro facoltativo errorInfo che contiene le informazioni su qualsiasi errore nella pagina.

    Nell'esempio che segue viene utilizzato il metodo TraceContext.Write per inserire note personalizzate nel log dell'analisi di un controllo server. La categoria è My Class e il messaggio è This is a simple trace statement.

    Context.Trace.Write("My Class","This is a sample trace statement.");
    [Visual Basic]
    Context.Trace.Write("My Class","This is a sample trace statement.")
    

In alcuni casi si può desiderare di passare istruzioni ai metodi Write o Warn solo quando la funzione di analisi è disattivata. Per l'oggetto TraceContext è disponibile una proprietà Boolean, IsEnabled, che consente di chiamare questi metodi in modo condizionale.

Per scrivere messaggi di analisi nel log solo quando è attivata la funzione di analisi

  • Creare un'istruzione If che controlli se la funzione di analisi è stata attivata per la pagina o l'applicazione a cui appartiene il codice, quindi creare un'istruzione condizionale da eseguire quando la proprietà Trace.IsEnabled restituisce il valore true.

    Nell'esempio che segue viene confermata l'attivazione della funzione di analisi per una pagina, quindi viene utilizzato il metodo Write per inserire un determinato numero di libri da un database nella tabella Informazioni analisi.

    If (Trace.IsEnabled) {
        For (int i=0; i<ds.Tables["Books"].Rows.Count; i++) {
             Trace.Write("Prod",ds.Tables["Books"].Rows[i][0].ToString());
        }
    }
    [Visual Basic]
    If Trace.IsEnabled Then
        For i=0 To ds.Tables("Books").Rows.Count-1
            Trace.Write("Prod",ds.Tables("Books").Rows(i)(0).ToString())
        Next
    End If
    

Vedere anche

Classe TraceContext | Analisi di ASP.NET| Classe Page | Classe HttpContext | Attivazione dell'analisi a livello di applicazione