Condividi tramite


Debug di oggetti script nelle pagine ASP

Per eseguire il debug di oggetti script in pagine ASP, consultare le informazioni riportate nei seguenti argomenti della Guida:

  • Definizione di modello di oggetti script

  • Debug e libreria di script

  • Attivazione del debug di oggetti script

  • Report di errori

  • Traccia degli eventi

  • Traccia degli avvisi

Definizione di modello di oggetti script

Il modello di oggetti script ASP consente di definire un gruppo di oggetti che dispongono di eventi, proprietà e metodi utilizzabili in un'applicazione Web. La maggior parte degli oggetti script rappresenta elementi dell'interfaccia utente, quali pulsanti e caselle di testo, e funziona in modo simile ai controlli di Microsoft Visual Basic.

Gli oggetti script in Visual Studio 2010 non necessitano di un runtime particolare, in quanto vengono definiti in file di script inclusi nella pagina ASP quando si utilizzano gli oggetti. Anche se questi file sono semplicemente script, incapsulano comandi ADO (ActiveX Data Objects) ed elementi HTML per creare oggetti sofisticati che supportano la programmazione basata su eventi.

Esistono due versioni di ogni oggetto script: la prima viene eseguita sul server in ASP per browser HTML 3.2 generici e la seconda viene eseguita sul client in Internet Explorer versioni 4.0 e successive. Il modello di programmazione (eventi, metodi e proprietà) è identico per entrambe le versioni. Gli oggetti script possono essere creati e utilizzati direttamente nel codice o mediante controlli Design-Time. Quando la pagina ASP viene salvata, il codice dell'oggetto script viene mantenuto come combinazione di HTML standard e script.

Debug e libreria di script

Poiché gli oggetti script sono scritti in linguaggio script, il debug di script che interagiscono con il modello di oggetti script può essere complicato per le ragioni seguenti:

  • Innanzitutto, quando si utilizza il debugger per eseguire lo script un'istruzione alla volta, è possibile che venga eseguito il codice sofisticato e poco familiare della libreria di script.

  • In secondo luogo, se si verifica un errore all'interno della libreria di script, l'esecuzione un'istruzione alla volta può risultare impegnativa e non facilitare l'identificazione dell'errore.

  • Infine, a volte può risultare difficile seguire la sequenza degli eventi e il flusso di controllo tra lo script e il modello di oggetti script.

Le seguenti opzioni di debug del modello di oggetti script consentono di eseguire il debug dell'applicazione nelle circostanze descritte:

  • Intercettazione degli errori di basso livello: se viene riscontrato un errore in un oggetto script quale Recordset, viene visualizzato un messaggio di errore dettagliato. Questa opzione facilita l'individuazione di errori con componenti che potrebbero avere esito negativo per ragioni esterne.

  • Traccia degli eventi: è possibile visualizzare nella pagina un elenco di eventi che vengono generati nel momento in cui si verificano. Questa opzione consente di visualizzare il momento in cui gli script vengono eseguiti rispetto allo script degli eventi del modello di oggetti script.

  • Traccia degli avvisi: è possibile visualizzare messaggi di avviso che indicano possibili errori che altrimenti si verificherebbero in modo invisibile all'utente. Questa opzione consente di individuare problemi come quelli causati dalla trasmissione di parametri non validi a un metodo.

Attivazione del debug di oggetti script

Solitamente una pagina ASP include un blocco di script nella parte superiore, con le opzioni di debug. Per impostazione predefinita, le opzioni sono disattivate. Il blocco di script è analogo a quello seguente:

<SCRIPT id=DebugDirectives runat=server language=JScript>

// Set these to true to enable debugging or tracing

@set @debug=false

@set @trace=false

</SCRIPT>

Per il debug di oggetti script è necessario che sul server sia in esecuzione Microsoft JScript 5.0 o versioni successive. È possibile scaricare JScript 5.0 dal sito Web Microsoft.

Per attivare il debug, impostare su true le opzioni di debug desiderate. Per intercettare, ad esempio, gli errori di basso livello, modificare il blocco nel modo seguente:

<SCRIPT id=DebugDirectives runat=server language=JScript>
// Set these to true to enable debugging or tracing
@set @debug = true
@set @trace = false
</SCRIPT>

Il blocco di opzioni di debug deve essere visualizzato immediatamente dopo la direttiva @language nella parte superiore della pagina ASP.

È possibile impostare complessivamente quattro opzioni, come descritto di seguito:

Nome

Scopo

@debug

Consente di riportare gli errori selezionati in oggetti script specifici.

@trace

Consente di attivare entrambe le opzioni di traccia elencate di seguito.

@trace_events

Consente di attivare la traccia degli eventi.

@trace_warnings

Consente di attivare gli avvisi relativi a possibili errori che solitamente si verificano in modo invisibile all'utente.

Informazioni dettagliate sulle singole impostazioni sono riportate in sezioni successive di questo argomento.

Nota

L'impostazione di @trace su true comporta l'override delle impostazioni di @trace_events e @trace_warnings. Se tuttavia si imposta @trace su false, è possibile attivare o disattivare singolarmente le opzioni di traccia.

Le singole opzioni di traccia non fanno parte del blocco di script predefinito nella pagina ASP. Se si desidera impostarle singolarmente sarà quindi necessario aggiungerle. Il codice seguente consente, ad esempio, di attivare solo la traccia degli eventi e non gli avvisi:

<SCRIPT id=DebugDirectives runat=server language=JScript>

@set @debug = false

@set @trace = false

@set @trace\_events = true

</SCRIPT>

Se si utilizza Microsoft Internet Explorer 4.x, l'impostazione di un'opzione @trace comporta l'override del tag BODY. Questo può far sì che l'associazione di eventi nel tag BODY venga disabilitata e che gli attributi vengano ignorati. Questo problema non si verifica se si utilizza Internet Explorer versione 5.0 o successive.

Lo stile di associazione di eventi seguente non funziona in Internet Explorer 4.0:

<BODY onload="initialize()">

Per ovviare a questa limitazione, utilizzare un meccanismo di associazione diverso. Se si utilizza Visual Basic, Scripting Edition (VBScript), è possibile utilizzare l'associazione implicita:

<SCRIPT LANGUAGE="VBScript">

Function window_onload()

initialize()

End Function

</SCRIPT>

Se si utilizza JScript, è possibile chiamare uno script globale che consenta di assegnare un puntatore a funzione a un evento dell'oggetto window come illustrato di seguito:

<SCRIPT LANGUAGE="JScript">
   window.onload = initialize
</SCRIPT>

Se il tag BODY contiene attributi, si consiglia di impostare tali attributi nello script anziché impostare le proprietà dell'oggetto document. Se, ad esempio, il tag BODY contiene l'attributo BGCOLOR="#FFFF00", è possibile impostarlo utilizzando uno script analogo a quello riportato di seguito. Utilizzare la tecnica precedentemente descritta in questa sezione per chiamare lo script quando il documento viene caricato per la prima volta.

<SCRIPT LANGUAGE="JScript">
function initialize(){
   document.bgColor = "#FFFF00";
}
</SCRIPT>

Report di errori

Alcuni oggetti script interagiscono con altri oggetti al di fuori della pagina. L'oggetto Recordset, ad esempio, utilizza ADO per accedere ai database. Se si verificano errori nel corso di queste interazioni, le informazioni sugli errori riportate dall'oggetto esterno possono essere ambigue o sembrare incomplete nel contesto della pagina.

L'opzione @debug consente di utilizzare un meccanismo di report che rileva e interpreta un insieme comune di questi tipi di errore. Le informazioni sugli errori vengono scritte nella pagina ASP e visualizzate con il contenuto standard della pagina. In alcuni casi, viene visualizzato anche il messaggio di errore sottostante.

Se, ad esempio, l'opzione @debug è impostata su true e l'oggetto Recordset tenta di eseguire un'istruzione SQL non valida, nella pagina potrebbe essere visualizzato un messaggio analogo a quello seguente:

SCRIPTING OBJECT MODEL EXCEPTION:

FILE: recordset.asp

FUNCTION: Recordset1.open()

DESCRIPTION: Failed to open the ADO recordset. Check for the following

possible causes:

An invalid SQL statement.

Missing or invalid database object name (check Recordset DTC properties)

Missing parameters or parameter type mismatch (parameters must be set

before recordset is opened).

Traccia degli eventi

Quando in una pagina ASP viene utilizzato il modello di oggetti script, i singoli oggetti script generano eventi in risposta a variazioni di stato, ad esempio Recordset1_ondatasetcomplete, o azioni dell'utente, ad esempio Button1_onclick. Spesso è necessario sapere quando vengono eseguiti i propri script rispetto agli eventi generati dal modello di oggetti script.

A questo scopo attivare la traccia degli eventi impostando l'opzione @trace o @trace\_events su true. Quando si attiva la traccia degli eventi, le informazioni sugli eventi vengono scritte nella pagina ASP nel momento in cui si verificano. Una parte di pagina ASP, ad esempio, potrebbe essere analoga a quella seguente:

EVENT TRACE: thisPage fired oninit event.

EVENT TRACE: Recordset1 fired onbeforeopen event.

EVENT TRACE: Recordset1 fired onrowenter event.

EVENT TRACE: Recordset1 fired ondatasetchanged event.

EVENT TRACE: Recordset1 fired ondatasetcomplete event.

Per determinare quando lo script viene eseguito, includere istruzioni Response.Write in corrispondenza di punti importanti, come illustrato nello script riportato di seguito. Nell'esempio viene impostato un parametro per un recordset in base alle informazioni contenute in una casella di testo. Ogni passaggio viene riportato e visualizzato nella pagina.

Sub btnQuery_onclick()

Recordset1.close()

Response.Write("Finished closing recordset.")

Recordset1.setParameter 1, txtLastName.value

Response.Write("Finished resetting query parameter.")

Recordset1.open()

Response.Write("Finished reopening recordset.")

End Sub

Utilizzando i comandi di compilazione condizionale di JScript, è possibile fare in modo che le istruzioni Response.Write vengano visualizzate nella pagina solo se si impostano le opzioni di debug. Nel blocco seguente, ad esempio, l'istruzione Response.Write viene eseguita solo se l'opzione @trace è impostata su true:

@if (@trace)

Response.Write("Ready to set SQL statement parameters.");

@end

Non vi sono limitazioni nell'utilizzo delle opzioni di debug. È inoltre possibile creare flag di condizione personalizzati, come illustrato nell'esempio seguente:

@set @trace\_custom = true

' ... other script here

@if (@trace_custom)

Response.Write("Ready to set SQL statement parameters.");

@end

Nota

Prima di mettere in produzione le pagine, verificare di aver impostato le condizioni di debug su false.

Per ulteriori informazioni sulla compilazione condizionale, vedere i comandi @if e @set nella sezione relativa alle istruzioni del sito Web Microsoft Scripting.

Traccia degli avvisi

Per rendere più affidabili gli oggetti script, ridurre la visualizzazione di elementi indesiderati

informazioni su una pagina ASP, gli oggetti script non segnalano generalmente errori non-irreversibili. Se, ad esempio, si passa un valore non valido a un metodo di oggetti script e tale valore non determina un errore così grave da impedire il caricamento dell'oggetto, spesso l'esecuzione dell'oggetto continua senza che venga visualizzato alcun messaggio di errore. Durante lo sviluppo dell'applicazione è tuttavia necessario sapere se è stato riscontrato un possibile problema nell'oggetto script. A volte i problemi non riportati possono causarne altri durante l'esecuzione della pagina, rendendo più difficile il debug.

La soluzione consiste nel tracciare gli avvisi impostando l'opzione @trace o @trace\_warnings su true. Se viene riscontrato un possibile problema nell'oggetto script, le informazioni verranno scritte nella pagina in un formato analogo a quello seguente:

WARNING TRACE:

FILE: recordset.asp

FUNCTION: Recordset1.open()

DESCRIPTION: Recordset is already open.

Vedere anche

Attività

Procedura: attivare il debug di script in Esplora soluzioni

Concetti

Informazioni sull'elaborazione di script ASP

Altre risorse

Debug di applicazioni ASP