ASP Il file Global.asa


Il file Global.asa

Il file Global.asa è un file facoltativo che può contenere dichiarazioni di oggetti, variabili e metodi a cui è possibile accedere da ogni pagina in un'applicazione ASP.

Tutti gli script browser validi (JavaScript, VBScript, JScript, PerlScript, ecc.) possono essere utilizzati all'interno di Global.asa.

Il file Global.asa può contenere solo quanto segue:

  • Eventi applicativi
  • Eventi di sessione
  • Dichiarazioni <oggetto>
  • TipoDichiarazioni di libreria
  • la direttiva #include

Nota: il file Global.asa deve essere archiviato nella directory principale dell'applicazione ASP e ogni applicazione può avere un solo file Global.asa.


Eventi in Global.asa

In Global.asa puoi dire all'applicazione e agli oggetti sessione cosa fare all'avvio dell'applicazione/sessione e cosa fare al termine dell'applicazione/sessione. Il codice per questo viene inserito nei gestori di eventi. Il file Global.asa può contenere quattro tipi di eventi:

Application_OnStart : si verifica quando il PRIMO utente chiama la prima pagina in un'applicazione ASP. Questo evento si verifica dopo il riavvio del server Web o dopo la modifica del file Global.asa. L'evento "Session_OnStart" si verifica immediatamente dopo questo evento.

Session_OnStart - Questo evento si verifica OGNI volta che un NUOVO utente richiede la sua prima pagina nell'applicazione ASP.

Session_OnEnd - Questo evento si verifica OGNI volta che un utente termina una sessione. Una sessione utente termina dopo che una pagina non è stata richiesta dall'utente per un periodo di tempo specificato (per impostazione predefinita è 20 minuti).

Application_OnEnd - Questo evento si verifica dopo che l'ULTIMO utente ha terminato la sessione. In genere, questo evento si verifica quando un server Web si arresta. Questa procedura viene utilizzata per ripulire le impostazioni dopo l'arresto dell'applicazione, come eliminare record o scrivere informazioni su file di testo.

Un file Global.asa potrebbe assomigliare a questo:

<script language="vbscript" runat="server">

sub Application_OnStart
'some code
end sub

sub Application_OnEnd
'some code
end sub

sub Session_OnStart
'some code
end sub

sub Session_OnEnd
'some code
end sub

</script>

Nota: poiché non possiamo utilizzare i delimitatori di script ASP (<% e %>) per inserire script nel file Global.asa, inseriamo le subroutine all'interno di un elemento HTML <script>.



<oggetto> Dichiarazioni

È possibile creare oggetti con ambito di sessione o applicazione in Global.asa utilizzando il tag <object>.

Nota: il tag <object> dovrebbe essere esterno al tag <script>!

Sintassi

<object runat="server" scope="scope" id="id" {progid="progID"|classid="classID"}>
....
</object>

Parameter Description
scope Sets the scope of the object (either Session or Application)
id Specifies a unique id for the object
ProgID An id associated with a class id. The format for ProgID is [Vendor.]Component[.Version]

Either ProgID or ClassID must be specified.

ClassID Specifies a unique id for a COM class object.

Either ProgID or ClassID must be specified.

Esempi

Il primo esempio crea un oggetto con ambito di sessione denominato "MyAd" utilizzando il parametro ProgID:

<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator">
</object>

Il secondo esempio crea un oggetto dell'ambito dell'applicazione denominato "MyConnection" utilizzando il parametro ClassID:

<object runat="server" scope="application" id="MyConnection"
classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
</object>

Gli oggetti dichiarati nel file Global.asa possono essere utilizzati da qualsiasi script nell'applicazione:

GLOBAL.ASA:

<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator">
</object>

You could reference the object "MyAd" from any page in the ASP application:

SOME .ASP FILE:

<%=MyAd.GetAdvertisement("/banners/adrot.txt")%>

TipoDichiarazioni di libreria

Una TypeLibrary è un contenitore per il contenuto di un file DLL corrispondente a un oggetto COM. Includendo una chiamata a TypeLibrary nel file Global.asa, è possibile accedere alle costanti dell'oggetto COM e gli errori possono essere segnalati meglio dal codice ASP. Se l'applicazione Web si basa su oggetti COM che hanno dichiarato tipi di dati nelle librerie dei tipi, è possibile dichiarare le librerie dei tipi in Global.asa.

Sintassi

<!--METADATA TYPE="TypeLib"
file="filename" uuid="id" version="number" lcid="localeid"
-->

Parameter Description
file Specifies an absolute path to a type library.

Either the file parameter or the uuid parameter is required

uuid Specifies a unique identifier for the type library.

Either the file parameter or the uuid parameter is required

version Optional. Used for selecting version. If the requested version is not found, then the most recent version is used
lcid Optional. The locale identifier to be used for the type library

Valori di errore

Il server può restituire uno dei seguenti messaggi di errore:

Error Code Description
ASP 0222 Invalid type library specification
ASP 0223 Type library not found
ASP 0224 Type library cannot be loaded
ASP 0225 Type library cannot be wrapped

Nota: i tag METADATA possono apparire ovunque nel file Global.asa (sia all'interno che all'esterno dei tag <script>). Tuttavia, si consiglia che i tag METADATA vengano visualizzati nella parte superiore del file Global.asa.


Restrizioni

Restrizioni su cosa puoi includere nel file Global.asa:

  • Non è possibile visualizzare il testo scritto nel file Global.asa. Questo file non può visualizzare informazioni
  • È possibile utilizzare solo gli oggetti Server e Application nelle subroutine Application_OnStart e Application_OnEnd. Nella subroutine Session_OnEnd è possibile utilizzare gli oggetti Server, Application e Session. Nella subroutine Session_OnStart è possibile utilizzare qualsiasi oggetto integrato

Come usare le subroutine

Global.asa viene spesso utilizzato per inizializzare le variabili. 

L'esempio seguente mostra come rilevare l'ora esatta in cui un visitatore arriva per la prima volta su un sito Web. L'ora è memorizzata in una variabile Session denominata "started" ed è possibile accedere al valore della variabile "started" da qualsiasi pagina ASP nell'applicazione:

<script language="vbscript" runat="server">
sub Session_OnStart
Session("started")=now()
end sub
</script>

Global.asa può essere utilizzato anche per controllare l'accesso alla pagina.

L'esempio seguente mostra come reindirizzare ogni nuovo visitatore a un'altra pagina, in questo caso a una pagina chiamata "newpage.asp":

<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
end sub
</script>

E puoi includere funzioni nel file Global.asa.

Nell'esempio seguente la subroutine Application_OnStart si verifica all'avvio del server Web. Quindi la subroutine Application_OnStart chiama un'altra subroutine denominata "getcustomers". La subroutine "getcustomers" apre un database e recupera un set di record dalla tabella "customers". Il record set viene assegnato a un array, a cui è possibile accedere da qualsiasi pagina ASP senza 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>

Global.asa Esempio

In questo esempio creeremo un file Global.asa che conta il numero di visitatori attuali.

  • Application_OnStart imposta la variabile dell'applicazione "visitatori" su 0 all'avvio del server
  • La subroutine Session_OnStart ne aggiunge uno alla variabile "visitatori" ogni volta che arriva un nuovo visitatore
  • La subroutine Session_OnEnd ne sottrae uno dai "visitatori" ogni volta che viene attivata questa subroutine

Il file Global.asa:

<script language="vbscript" runat="server">

Sub Application_OnStart
Application("visitors")=0
End Sub

Sub Session_OnStart
Application.Lock
Application("visitors")=Application("visitors")+1
Application.UnLock
End Sub

Sub Session_OnEnd
Application.Lock
Application("visitors")=Application("visitors")-1
Application.UnLock
End Sub

</script>

Per visualizzare il numero di visitatori attuali in un file ASP:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>There are <%response.write(Application("visitors"))%> online now!</p>
</body>
</html>