Afin de permettre de configurer une application (un site web) avec des paramètres par défaut 
sans devoir modifier la configuration du serveur, le modèle ASP propose l'utilisation d'un fichier de configuration, 
nommé global.asa, qui, placé à la racine du site web, permet à son concepteur 
d'exécuter des instructions, d'initialiser des variables, avant ou après l'exécution d'un script.
 
 
 
 | 
Lorsque le fichier global.asa est modifié alors que le site est en production, le serveur attendra la 
fin des requêtes en cours avant de prendre en compte les modifications ! Il est ainsi probable de voir le serveur HTTP 
renvoyer des messages d'erreurs durant le temps de redémarrage de l'application nécessaire à la prise en compte 
de ces changements !
 | 
 
 
 
Le fichier global.asa est constitué de plusieurs sections optionnelles de 3 types. 
Les 3 types de sections sont les suivants :
 
- une ou plusieurs sections <script>, permettant de gérer des événements 
liés aux objets Application et Session ;
 
- une ou plusieurs sections <object>, permettant de créer ou de détruire des objets 
Application et/ou Session ;
 
- une ou plusieurs sections de définition des bibliothèques de type.
 
 
Il est possible d'ajouter des commentaires dans le fichier global.asa en utilisant 
les balises de commentaire HTML :
 
<!-- Ceci est un commentaire HTML pouvant être inséré
dans le fichier global.asa -->
 
 
 
 | 
L'ordre dans lequel les sections sont définies n'a pas d'importance. De plus chaque section peut être ou 
non définie. Il peut également exister plusieurs sections de même type.
 | 
 
 
 
La section <script> permet de définir des événements liés 
aux objets Application et Session grâce à deux gestionnaires d'événements 
permettant de gérer deux états : le démarrage (OnStart) et l'expiration (OnEnd).
 La section script permet ainsi de gérer quatre événements :
 
 
| Evénement | 
Description | 
 
    
        | Application_OnStart | 
		Il s'agit d'un événement déclenché au démarrage de l'application, 
		c'est-à-dire à la mise en service du site web.  Dans la mesure où aucun client n'est 
		connecté au moment du lancement de l'application, il est impossible de faire appel au sein de cet 
		événement aux objets Session, Request ou Response. L'appel à ces derniers 
		provoque une erreur. 
		Ainsi il est uniquement possible de faire appel aux 
		objets Application et Server au sein de ce gestionnaire d'événement. | 
	 
	
    
        | Application_OnEnd | 
		Ce gestionnaire d'événement sera appelé lors de la mise hors service de l'application 
		(par exemple l'arrêt du serveur HTTP). De façon analogue au gestionnaire d'événement 
		Application_OnStart, l'appel aux objets Session, Request ou Response provoque une 
		erreur étant donné que ceux-ci ont été préalablement terminés. Seuls 
		les objets Application et Server peuvent donc être utilisés au sein de cet événement. | 
	 
	
    
        | Session_OnStart | 
		Cet événement est appelé au démarrage d'une session d'un utilisateur. Contrairement aux 
		événements liés à l'objet Application, il est possible dans l'événement 
		Session_OnStart de faire appel à tous les objets ASP (Request, Response, Session, Application, Server et ObjectContext). | 
	 
	
    
        | Session_OnEnd | 
		L'événement Session_OnEnd est déclenché lors de la fermeture de la session par l'utilisateur, 
		ou bien lorsque le temps alloué à la session est expiré. Ainsi, puisque cet événement peut être 
		déclenché sans requête du client, seuls les objets Application, Session et Server peuvent être utilisés. | 
	 
	
 
La section <Script> se construit de la manière suivante :
 
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
  Sub Application_OnStart
    'Code à placer éventuellement à cet emplacement
  End Sub
  Sub Application_OnEnd
    'Code à placer éventuellement à cet emplacement
  End Sub
  
  
  Sub Session_OnStart
    'Code à placer éventuellement à cet emplacement
	
  End Sub
  Sub Session_OnEnd
     'Code à placer éventuellement à cet emplacement
  End Sub
</SCRIPT>
Voici un exemple d'utilisation du fichier global.asa servant 
à afficher sur le site le nombre de connectés simultanés. Sera 
considéré comme connecté tout utilisateur ayant fait une requête 
dans les 15 minutes précédentes.
 
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
  Sub Application_OnStart
    'Initialisation du nombre de connectés
	Application("nb_connectes") = 0
  End Sub
  Sub Application_OnEnd
    'Code à placer éventuellement à cet emplacement
  End Sub
  
  
  Sub Session_OnStart
    	Session("debut") = now()
	Application.Lock
	Application("nb_connectes") = Application("nb_connectes") + 1
	Application.UnLock
  End Sub
  Sub Session_OnEnd
     'Code à placer éventuellement à cet emplacement
	Application.Lock
	Application("nb_connectes") = Application("nb_connectes") - 1
	Application.UnLock
  End Sub
</SCRIPT>
Pour afficher le résultat dans la page ASP, il suffira d'inclure la 
ligne suivante :
 
<% Response.Write(Application("nb_connectes")) %>
 
La section Object du fichier global.asa a pour but de permettre de 
déclarer des objets pouvant ainsi être mis à disposition 
de tous les visiteurs (en lui donnant comme portée l'objet Application) 
ou bien de chaque visiteur séparément (en lui donnant comme portée l'objet Session).
 
 
 
 | 
Les objets déclarés dans la section object ne sont pas instanciés avant 
d'être appelés dans un script, ainsi la mémoire n'est pas nécessairement 
allouée si elle n'a pas de raison de l'être.
 | 
 
 
Voici la structure d'une section Object :
 
<Object 	RunAt="Server" 
            	Scope="Session|Application"
            	Id="Identifiant" 
            	{ProgId="ProgId"|ClassId="ClassId"}>
				
</Object>
L'attribut RunAt doit obligatoirement être égal 
à Server. L'attribut Scope définit la portée de l'objet. Si 
la portée est Application, l'objet ainsi défini sera partagé par tous 
les utilisateurs de l'application, par contre s'il s'agit de Session, chaque utilisateur 
bénificiera d'une instance particulière. Enfin l'attribut Id définit 
un identifiant permettant de faire appel à l'objet au sein des scripts, ProgId et 
ClassId permettent  de faire appel à des identifiants respectivement de classe et de classe COM 
d'objets existants. Suivant que l'on fait référence à un objet COM ou non on utilisera 
l'un ou l'autre de ces attributs.
 
 
 
 | 
Il est impératif de ne pas imbriquer les sections Object et les sections Script !
 | 
 
 
Voici un exemple comprenant deux déclarations d'objets :
 
<Object 	RunAt="Server" 
	Scope="Application"
	Id="Application_id" 
	ClassId="Clsid:5DC843A2F1-3FC3-5DE4-432B-5A5C5A9F89ED">
</Object>
<Object 	RunAt="Server" 
	Scope="Session"
	Id="Connection_id" 
	ProgId="ADODB.Connection">
</Object>
 
  
 
 |