Per poter usare le pontezialità di questo file dobbiamo prima crearlo. Nel nostro progetto VS selezioniamo da Esplora Soluzioni la nostra Soluzione, tasto destro Inserisci Nuovo Elemento e selezioniamo Global.asax.
Questo file deve risiedere nella root principale dell' Applicazione. Vediamo subito quali sono le possibili operazioni che possiamo effettuare tramite questo file.

  • Interagire con eventi scatenati dall' Applicazione o dalla Sessione.
  • Rispondere a eventi HttpModules personalizzati.
  • Impostare spazi dei nomi in modo tale da poterli usare in tutte lepagine senza doverli dichiarare ogni volta.
  • Registrare Assembly.
  • Creare istanze di oggetti a livello di Applicazione con <runat="server".

Gli eventi.

Una volta creato il file,seselezioniamo da VS Visualizza Codice nel' IDE compare una pagina global.asax.vb, con i seguenti eventi pronti all'uso :

  • Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
    ' Generato all'apertura della sessione
    End Sub
  • Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
    ' Generato all'inizio di ogni richiesta
    End Sub
  • Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
    ' Generato durante il tentativo di autenticazione dell'utente
    End Sub
  • Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
    ' Generato in caso di errore
    End Sub
  • Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
    ' Generato alla fine della sessione
    End Sub
  • Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
    ' Generato alla chiusura dell'applicazione
    End Sub

Notate che nella pagina global.asax non vi è nulla se non la direttiva <%@ Application Codebehind="Global.asax.vb" Inherits="MyWebApp.Global" %>questo significa davvero difidere il codice dalla presentazione. Vi ricordo che se usate la direttiva Codebehind, il file vb o cs dovranno essere compilati, quindi viene creata in automatico una cartella Bin all' interno della Applicazione. Li troviamo MyWebApp.dll che contiene le compilazioni dei file .vb e il file MyWebApp.xml.

Importazione di spazi dei nomi.

Con la direttiva <%@ Imports Namespace="System.Data" %> forniamo la possibilità di usare questa direttiva per tutta la durata della applicazione. Dobbiamo notare però che se usassimo nella nostra applicazione solamente direttive dichiarate a livello di Global.asax per gli spazi dei nomi, potremmo dare difficoltà ad un altro programmatore che non conosce la struttura della applicazione stessa.

Vi ricordo che se lavorate nel file global.asax.vb la direttiva diventa Imports System.Data.

Creazione di componenti.

Nel nostro file global.asax possiamo anche decidere di importare un Componente a livello di Applicazione, in questo modo con una sola direttiva tutta la nostra applicazione avrà la possibilità di poterlo usare. Nel seguente codice potete vedere come importare un componente a livello di applicazione :

<object runat="Server" class="System.Data.Dataset" scope="Application">

L' attributo scope consentei seguentivalori (Application, Session, AppIstance), quello in neretto è quello di default.
Ultimo, due note sulla creazione di componenti nel global.asax :

  • Da usare con parsimonia poichè la memoria del server può risentire dell' utilizzo di diversi componenti a livello di Applicazione.
  • Prestare attenzione al Multithread, ogni componente dovrebbe esserlo. Normalmente quelli VB 6 non lo sono.
  • Le istanze di tali oggetti non sono generate immediatamente ma solo quando le pagine ci accedono.