The manual Page
English version
accueil | glossaire | downloads | liens ]
 

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...

format imprimable format imprimable



Copyright © 2000-2006 themanualpage.org - Ce site est soumis aux conditions décrites dans les licences GNU GPL et FDL.