Le fichier global.asa
|
Introduction
Le fichier global.asa est un fichier optionnel à placer dans le répertoire
racine de l'application ASP, et qui sert à définir, déclarer ou initialiser des variables
ou objets d'application ou de session (on appelle application l'ensemble des fonctions
réalisées par les pages ASP d'un site Web).
Lorsque le fichier global.asa est modifié, le serveur attend d'avoir répondu à
toutes les requêtes en cours avant de recompiler le fichier. Durant cette opération, le serveur
HTTP renvoie un message d'erreur disant que la requête ne peut pas être traitée tant que le
serveur redémarre.
Un fichier global.asa peut être composé de 3 sections distinctes : une ou
plusieurs sections <SCRIPT>, qui contiennent la définition des
événements de session et d'application, une ou plusieurs sections <OBJECT>
pour créer des objets de session ou d'application, et une ou plusieurs sections de définition
des bibliothèques de types.
Aucune de ces sections n'est obligatoire. Il n'y a pas d'ordre particulier dans la définition des
sections.
Il est possible de mettre des commentaires au format HTML (<!-- ... -->) dans le fichier
global.asa.
Section <SCRIPT>
Les événements
Cette section sert à définir les événements d'application et de session.
Les 4 événements déclarables dans ce fichier sont :
| événement |
déclanchement |
commentaires |
Application_OnStart
|
lorsque l'application démarre (exété avant le tout premier
Session_OnStart)
|
seuls les objets ASP Application
et Server peuvent être utilisés
dans cet événement ; utiliser les autres objets (Session,
Request ou Response)
déclanche une erreur.
|
Application_OnEnd
|
lorsque l'application s'arrête (exété après le tout
dernier Session_OnEnd)
|
Mêmes commentaires que pour Application_OnStart
|
Session_OnStart
|
lorsque le serveur crée une nouvelle session. Ce script est exécuté
avant d'analyser la page demandée.
|
tous les objets ASP peuvent être utilisés dans cet événement
|
Session_OnEnd
|
lorsqu'une session expire ou est abandonnée
|
seuls les objets ASP Application,
Session et Server
peuvent être utilisés dans cet événement
|
Il est bien entendu possible d'utiliser ces événements pour définir
des variables d'application (i.e. des variables globales, valables pour tous les visiteurs en même
temps) ou de session (i.e. des variables globales, mais définies pour chaque visiteur). Voir
respectivement la documentation sur l'objet Application
et l'objet Session.
On peut déclarer et définir des variables (autres que les variables d'application), fonctions
ou procédures dans la section <SCRIPT>, mais ces éléments ne sont
visibles que dans ce fichier (pour définir des procédures globales, il faut les écrire
dans un fichier séparé et inclure ce fichier au début de chaque script ASP ; voir
comment inclure un fichier).
Syntaxe
La section <SCRIPT> doit commencer et finir avec les délimiteurs HTML de script
<SCRIPT> avec deux attributs obligatoires : language (langage de programmation
utilisé dans cette section : VBScript, JScript...) et runat (sa valeur est obligatoirement
"Server") :
<SCRIPT language="VBScript" runat="Server">
' Code VBScript
...
<SCRIPT>
|
L'exemple suivant montre comment utiliser la section <SCRIPT> et les événements
pour faire un compteur de visiteurs :
<SCRIPT language="VBScript" runat="server">
' Evenement de demarrage d'application : l'application demarre,
' il faut initialiser le compteur de visiteurs
Sub Application_OnStart
Application("visiteurs") = 0
End Sub
' Evenement de fin d'application
Sub Application_OnEnd
...
code VBScript
...
End Sub
' Evenement de debut de session : on dit quand la session a commence
' et on incremente le compteur de visiteurs courants
Sub Session_OnStart
Session("debut") = now()
Application.Lock
Application("visiteurs") = Application("visiteurs") + 1
Application.UnLock
End Sub
' Evenement de fin de session : on decremente le compteur de visiteurs
' courants
Sub Session_OnEnd
Application.Lock
Application("visiteurs") = Application("visiteurs") - 1
Application.UnLock
' Appel a la procedure personnelle
ma_procedure
End Sub
' Procedure personnelle visible uniquement dans ce contexte
Sub ma_procedure
...
code VBScript
...
End Sub
</SCRIPT>
|
Section <OBJECT>
Introduction
Diverses sections <OBJECT> peuvent être utilisées dans le fichier global.asa
pour déclarer des objets d'application (le même objet pour tous les visiteurs) et de session (un
objet par visiteur). Ces objets ne sont pas créés jusqu'à ce que le serveur analyse un
script qui les utilise ; cela permet de ne pas allouer de ressources système inutilement.
Syntaxe
La section <OBJECT> se compose d'une balise HTML <OBJECT> contenant
les attributs suivants :
| attribut |
obligatoire ? |
signification/remarques |
runat |
oui |
sa valeur est obligatoirement Server
|
scope |
oui |
permet de dire s'il s'agit d'un objet d'application (valeur = Application)
ou de session (valeur = Session)
|
ID |
oui |
nom de l'objet. Ce nom sera utilisé dans les pages ASP pour utiliser l'objet.
|
progID |
non |
identifiant associé à un identifiant de classe. Identique à
l'identifiant utilisé avec la méthode Server.CreateObject.
|
classID |
non |
identifiant d'objet de classe COM
|
Dans tous les cas, il faut préciser l'attribut progID ou classID, mais
pas les deux.
Cette section ne peut pas apparaître dans une section <SCRIPT>.
Exemple
<OBJECT runat="Server" scope="Session" ID="connexion_de_session"
progID="ADODB.Connection">
REM Script d'objet
</OBJECT>
<OBJECT runat="Server" scope="Application" ID="connexion_d_application"
classID="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
REM Script d'objet
</OBJECT>
objets que l'on peut utiliser dans une page ASP de la façon suivante :
<%
connexion_de_session.ConnectionString = "Provider=MSDAORA; " & _
"Data Source=MABDD; " & _
"User ID=USER; " & _
"Password=PASSWORD;"
...
%>
|
Bibliothèques de types
introduction
Un bibliothèque de types (Type Library) est un fichier contenant des informations sur les types
et les objets supportés par les composants COM. Très souvent, les composants COM décrivent
les constantes qu'ils supportent dans des bibliothèques de types. Si l'application Web utilise des
composants COM qui ont déclaré des types de données dans des bibliothèques de
types, il peut être très intéressant de déclarer ces bibliothèques de
types dans le fichier global.asa afin de rendre ces types de données disponibles dans
toute l'application.
Syntaxe
On déclare une bibliothèque de types de la façon suivante :
<!--METADATA TYPE="TypeLib"
file="fichier"
UUID="UUID_bibliotheque_de_types"
version="version_superieure.version_inferieure"
LCID="ID_parametres_locaux"
-->
|
Aucun de ces paramètres n'est obligatoire :
| attribut |
signification/remarques |
UUID |
identifiant unique universel de la bibliothèque de types
|
version |
permet de choisir entre plusieurs versions des mêmes types. Si la version
donnée n'est pas trouvée, le serveur prend la version la plus récente.
|
LCID |
identifiant de paramètres locaux à utiliser pour cette bibliothèque
de types. Si cet identifiant n'est pas trouvé, les paramètres
syst`me seront utilisés. Si aucun paramètre système
n'est trouvé, le serveur utilise la valeur 0.
|
file |
chemin absolu vers le fichier de la bibliothèque de type
|
Soit file, soit UUID doit être précisé. Si ces deux
paramètres sont donnés, c'est file qui est utilisé.
La balise METADATA peut apparaître partout dans le fichier global.asa,
y compris dans une section <SCRIPT>, mais de préférence au début
du fichier.
Pour éviter les ambiguités de noms entre les constantes, il est conseillé d'utiliser
le nom de la bibliothèque en préfixe du nom de la constante (ADODB.adErrItemNotFound
plutôt que adErrItemNotFound).
Les erreurs
Selon que le serveur arrive à interpréter ou non la ligne de commande, une erreur peut
être retournée :
| erreur |
description |
ASP 0222 |
la balise METADATA n'est pas valide
|
ASP 0223 |
bibliothèque non trouvée. Aucune entrée de la table de registre
ne correspond aux spécifications de la balise METADATA
|
ASP 0224 |
la bibliothèque de types ne peut être chargée
|
ASP 0225 |
le serveur ne parvient pas à transformer les données de la
bibliothèque en objets
|
Exemple
Supposons que le composant COM COMposant définisse la constante Erreur
(qui est une chaîne de caractères decrivant une erreur). On va alors avoir la
déclaration suivante dans le fichier global.asa :
<!--METADATA type="TypeLib" file="COMposant.tlb" --> |
Qu'on utilisera ainsi dans un script ASP :
<%
Set var = Server.CreateObject("COMposant.Classe")
If (var.Methode) Then
Response.Write(Erreur)
End If
%> |
Restrictions
L'utilisation d'un fichier global.asa est soumise à certaines contraintes :
- on ne peut pas afficher des donnés (
Response.Write est interdit)
- on ne peut pas utiliser de
<!--#include...
Warning: main(../include/imprimable.php) [function.main]: failed to open stream: No such file or directory in /home.10.21/themanua/www2/asp/asp_global_asa.php3 on line 432
Warning: main() [function.include]: Failed opening '../include/imprimable.php' for inclusion (include_path='.:/usr/local/lib/php') in /home.10.21/themanua/www2/asp/asp_global_asa.php3 on line 432
|