asp - asp.net - aspcode.it

COMMUNITY - Login
 Username:
 
 Password:
 
Voglio registrarmi!
Password dimenticata?
 Utenti on-line: 0
 Ospiti on-line: 1262
ASPCode.it - Store

  > > Articoli

Facciamo la conoscenza del file global.asa

Data di pubblicazione: 17/05/2001        Voto della community: 3,44 (Votanti: 3)


Cosa , come si usa, la sua struttura. Impariamo ad utilizzare questo importante ed utilissimo file che dovrebbe essere implementato in tutte le applicazioni ASP, ma spesso ignorato dagli sviluppatori alle prime armi.

Tutte le applicazioni ASP possono contenere un file chiamato globla.asa che deve necessariamente risiedere, per essere preso in considerazione, nella directory root del WEB server che ospita l'applicazione stessa; alcuni si chiederanno: cosa e cosa f questo benedetto file?

Rispondiamo immediatamente a questi dilemmi dicendo che il file global.asa contiene codice (VBScript di solito anche se non obbligatoriamente, si potrebbe ad esempio utilizzare anche JScript) atto ad effettuare tutte quelle operazioni di inizializzazione dell'applicazione, come creare istanze di oggetti, inizializzare e settare variabili a livello di Sessione o Applicazione (per esempio: la connection string per un data base, un contatore degli utenti connessi, etc...) e viene eseguito ad ogni accesso utente all'applicazione ASP a cui relativo.

Ma vediamo in dettaglio cosa accade quando un utente apre il suo browser e, per esempio, digita nel campo URL: www.nomesito.it.

Non appena preme invio, viene innoltrata la richiesta al server WEB relativo, il quale avvia una sessione relativa all'utente che lo sta interrogando ed invia le pagine richieste; il file global.asa a questo punto intercetta alcuni eventi che accadono durante queste operazioni, ed in particolare gli eventi di avvio e fine della sessione e dell'applicazione.

Cosa significa questo? Il primo evento viene generato appunto al momento in cui un utente inoltra una richiesta di pagine al server WEB, il quale, una volta assicuratosi che chi ha effettuato la richiesta possiede le credenziali adatte a visualizzare le informazioni, crea una nuova sessione ed invia i contenuti al browser. Il secondo evento, come si intuisce, viene generato quando l'utente chiude il browser, e quindi termina la sua sessione di interrogazione del server WEB.

I restanti due eventi relativi all'applicazione vengono generati rispettivamente al primo accesso all'applicazione ASP da parte di un utente ed all'interruzione dell'applicazione dovuto ad esempio all'arresto del server WEB da parte dell'amministratore di rete.

Come abbiamo detto, global.asa pu intercettare questi eventi ed eseguire dei compiti prestabiliti.

Il formato del file global.asa normalmente il seguente:

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">

Sub Application_OnStart()
'Inserire qui il codice da eseguire all'avvio dell'applicazione
End Sub

Sub Application_OnEnd()
'Inserire qui il codice da eseguire all'arresto dell'applicazione
End Sub

Sub Session_OnStart()
'Inserire qui il codice da eseguire all'avvio di ogni sessione utente
End Sub

Sub Session_OnEnd()
'Inserire qui il codice da eseguire al termine di ogni sessione utente
End Sub

</SCRIPT>

Facciamo un esempio pratico, utilizzando il listato qui sopra e facendo fare al global.asa qualche operazione:

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">

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

Sub Session_OnStart()
  Application("UtentiConnessi")=Application("UtentiConnessi") + 1
End Sub

Sub Session_OnEnd()
  Application("UtentiConnessi")=Application("UtentiConnessi") - 1
End Sub

Sub Application_OnEnd()
End Sub

</SCRIPT>

Creiamo poi una pagina testglbasa.asp:

<HTML>
<HEAD>
<TITLE>Test global.asa</TITLE>
</HEAD>
<BODY>
  <P>

  <% = "Sessioni aperte: & Application("UtentiConnessi") %>

  </P>
</BODY>
</HTML>

Ora avviate il browser e digtate la URL relativa alla pagina appena creata, quello che si ottiene :

Sessioni Aperte: 1

Se si effettua il refresh della pagina, il risultato non cambia e il valore riportato non viene incrementato; questo dovuto al fatto che il browser crea una nuova sessione quando l'utente fa richiesta delle pagine dell'applicazione la prima volta che apre il browser, e termina quella sessione quando l'utente chiude il browser; come si visto, se si effettua il semplice refreshing della pagina, il server non crea una nuova sessione per quell'utente e quindi non viene generato l'evento Session_OnStart() del file global.asa che causa l'incremento della variabile di applicazione UtentiConnessi.

C' anche da dire una cosa per, che anche quando il browser viene chiuso, la sessione non viene distrutta immediatamente ma sempre con un certo ritardo, e quindi non viene immediatamente generato l'evento Session_OnEnd() del global.asa.

Per fare un esempio, se chiudiamo il browser e lo riapriamo immediatamente e digitiamo ancora la URL della nostra pagina di test, avremo il seguente risultato:

Sessioni Aperte: 2

anche se effettivamente la sessione in quel momento una.




Utenti connessi: 1262