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 |
---|---|
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. |
|
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.
|
|
Numero di richieste di analisi da memorizzare nel server. Il valore predefinito è 10. |
|
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. |
|
true per rendere disponibile il visualizzatore di analisi (Trace.axd) solo sul server Web host; in caso contrario false. Il valore predefinito è true. |
|
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 |
Classe principale per l'implementazione dell'analisi. |
|
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