Il file Global.asa è un file opzionale che può contenere dichiarazioni
di oggetti, variabili, metodi e può essere acceduto da ogni pagina dell’applicazione
ASP.
Il file Global.asa
Il file Global.asa è un file opzionale che può contenere dichiarazioni
di oggetti, variabili, metodi e può essere acceduto da ogni pagina dell’applicazione
ASP. Tutti gli script (JavaScript, VBScript, JScript, PerlScript, etc.) possono
essere usati nel file Global.asa.
Il file Global.asa può contenere solo le seguenti sezioni:
Eventi Application
Eventi Session
Dichiarazioni <object>
Dichiarazioni TypeLibrary
La direttiva #include
Nota: Il file Global.asa deve essere memorizzato nella direcrory principale dell’applicazione
ASP, ed ogni applicazione ASP può avere soltanto un file
Global.asa.
Eventi nel Global.asa
Nel file Global.asa si può dir eagli oggetti application e session cosa
fare quando l’applicazione o la sessione inizia o finisce. Il codice viene
inserito in dei gestori di eventi.
Il file Global.asa contiene quattro tipi di
eventi:
Application_OnStart – quando il PRIMO utente richiama la prima pagina dell’applicazione.
Questo evento avviene quando il Web server viene riavviato o dopo che il Global.asa è modificato.
L’evento "Session_OnStart" avviene immediatemente dopo.
Session_OnStart – tutte le volte che un NUOVO utente richiede la prima
pagina in un’applicazione.
Session_OnEnd – l’evento avviene TUTTE le volte che un utente termina
una sessione. U nutente termina una sessione quando non richiede pagine per un
certo lasso di tempo (di default 20 minuti).
Application_OnEnd – avviene quando l’ultimo utente termina una sessione
(tipicamente quando viene fermato il Web server.
Ecco un esempio di file Global.asa
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
End Sub
Sub Session_OnStart
End Sub
Sub Session_OnEnd
End Sub
Sub Application_OnEnd
End Sub
</SCRIPT>
Nota: Non possiamo usare i delimitatori di script asp (<% e %>) per inserire
scripts nel file Global.asa, dobbiamo inserire le subroutines all’interno
di tag <script>.
Dichiarazioni <object>
E’ possibile creare oggetti con visibilità di sessione o applicazione,
utilizzando il tag <object> nel file Global.asa.
Nota: Il tag <object> deve stare al di guori di tag <script>
Sintassi
<object runat="server" scope="scope" id="id"{progid="progID"|classid="classID"}>
....
</object>
| Parametro |
Descrizione |
| scope |
Imposta l’ambito dell’oggetto (Session o Application) |
| id |
Specifica un identificatore unico per l’oggetto |
| ProgID |
Un id associato all’id di classe.
Il formato è [Fornitore.]Componente[.Versione] |
| ClassID |
Specifica un id unico per un oggetto ProgID e ClassID devono essere
specificati. |
Esempi
Il primo esempio crea un oggetto di session chiamato "MyAd" usando
il parametro ProgID:
<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator"></object>
Il secondo esempio crea un oggetto di applicazione chiamato "MyConnection" utilizzando
il parametro ClassID:
<object runat="server" scope="application" id="MyConnection" lassid=" Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21"></object>
Gli oggetti dichiarati nel Global.asa possono essere usati da qualsiasi script
nell’applicazione:
GLOBAL.ASA:
<object runat="server" scope="session" id="MyAd"progid="MSWC.AdRotator"></object>
Facciamo
riferimento all’oggetto in un file:
ASP FILE:
<%=MyAd.GetAdvertisement("/banners/adrot.txt")%>
Dichiarazioni TypeLibrary
Un TypeLibrary è un contenitore per file DLL corrispondenti ad un oggetto
COM. Includendo una chiamata nel file Global.asa, le costanti dell’oggetto
COM possono essere accedute, e gli errori possono essere riportati meglio nel
codice ASP.
Sintassi
<!--METADATA TYPE="TypeLib" file=" filename" uuid="typelibraryuuid" version="versionnumber" lcid="localeid"-->
| Parametro |
Descrizione |
| File |
Specifica un percorso assoluto per un type library. Richiesto |
| Uuid |
Specifica un identificatore univoco. Richiesto |
| version |
Opzionale. Usato per identificare la versione |
| localeid |
Opzionale. |
Errori
Il server può restituire uno dei seguenti messaggi di errore:
| Error Code |
Descrizione |
| ASP 0222 |
Specifica di type library |
| ASP 0223 |
Type library |
| ASP 0224 |
Non è possible caricare la Type library |
| ASP 0225 |
Non è possible spostare il Type library |
Restrizioni
Cosa è possibile includere nel Global.asa:
Non si può visualizzare del testo scritto nel Global.asa. Questo file
non può visualizzare informazioni
Possiamo usare solo oggetti Server ed Application nelle subroutine Application_OnStart
ed Application_OnEnd. Nella subrutine Session_OnEnd subroutine, possiamo usare
oggetti Server, Application, e Session. Nella subrutine Session_OnStart subroutine
possiamo utilizzare tutti gli oggetti built-in
Come usare le Subroutines
Il Global.asa è usato spesso per inizializzare le variabili.
L’esempio in basso mostra come determinare quando un utente è entrato
nell’applicazione (o nel sito). Il tempo è memorizzato nella variabile
di sessione chiamata "started", e tale valore può essere usato
in qualsiasi pagina asp dell’applicazione:
<script language="vbscript" runat="server">
sub Session_OnStart
Session("started")=now()
end
sub
</script>
Il Global.asa può anche essere usato per controllare gli accessi alle
pagine.
L’esempio in basso mostra come ridirezionare ogni nuovo visitatore ad una
pagina chiamata "newpage.asp":
<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
end
sub
</script>
Ne Global.asa si possono includere anche delle funzioni.
Nell’esempio in basso, la subrutine the Application_OnStart viene richiamata
quando il webserver viene avviato, quindi la subroutine Application_OnStart chiama
un’altra subroutine "getcustomers". La "getcustomers" apre
una connessione ad un database e recupera I record dalla tabella "customers" table.
Il recordset è assegnato ad un aray, e può errere acceduto dalle
pagine dell’applicazionesenza eseguire query sul database:
<script language="vbscript" runat="server">
sub Application_OnStart
getcustomers
end
sub
sub getcustomers
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set
rs=conn.execute("select name from customers")
Application("customers")=rs.GetRows
rs.Close
conn.Close
end
sub
</script>
Esempio di file Global.asa
Nell’esempio seguente creeremo un file Global.asa che conta il numero di
utenti collegati al sito.
Application_OnStart imposta la variabile "visitors" a zero quando viene
avviato il server
La subroutine Session_OnStart aggiunge 1 alla variabile "visitors" ogni
volta che un utente si collega
La subroutine The Session_OnEnd toglie 1 alla variabile "visitors" ogni
volta che un utente lascia il sito
Il file Global.asa:
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
Application.Lock
Application("collegati") = 0
Application.UnLock
End Sub
Sub Session_OnStart
Application.Lock
Application("collegati") = Application("collegati") + 1
Application.UnLock
End Sub
Sub Session_OnEnd
Application.Lock
Application("collegati") = Application("collegati") - 1
Application.UnLock
End Sub
</SCRIPT>