ASP Le fichier Global.asa


Le fichier Global.asa

Le fichier Global.asa est un fichier facultatif qui peut contenir des déclarations d'objets, de variables et de méthodes accessibles par chaque page d'une application ASP.

Tous les scripts de navigateur valides (JavaScript, VBScript, JScript, PerlScript, etc.) peuvent être utilisés dans Global.asa.

Le fichier Global.asa ne peut contenir que les éléments suivants :

  • Événements d'application
  • Événements de session
  • déclarations <objet>
  • Déclarations TypeLibrary
  • la directive #include

Remarque : Le fichier Global.asa doit être stocké dans le répertoire racine de l'application ASP et chaque application ne peut avoir qu'un seul fichier Global.asa.


Événements dans Global.asa

Dans Global.asa, vous pouvez indiquer aux objets application et session quoi faire lorsque l'application/session démarre et quoi faire lorsque l'application/session se termine. Le code correspondant est placé dans les gestionnaires d'événements. Le fichier Global.asa peut contenir quatre types d'événements :

Application_OnStart - Se produit lorsque le PREMIER utilisateur appelle la première page d'une application ASP. Cet événement se produit après le redémarrage du serveur Web ou après la modification du fichier Global.asa. L'événement "Session_OnStart" se produit immédiatement après cet événement.

Session_OnStart - Cet événement se produit CHAQUE fois qu'un NOUVEL utilisateur demande sa première page dans l'application ASP.

Session_OnEnd - Cet événement se produit CHAQUE fois qu'un utilisateur termine une session. Une session utilisateur se termine après qu'une page n'a pas été demandée par l'utilisateur pendant un temps spécifié (par défaut, il s'agit de 20 minutes).

Application_OnEnd - Cet événement se produit après que le DERNIER utilisateur a mis fin à la session. En règle générale, cet événement se produit lorsqu'un serveur Web s'arrête. Cette procédure est utilisée pour nettoyer les paramètres après l'arrêt de l'application, comme supprimer des enregistrements ou écrire des informations dans des fichiers texte.

Un fichier Global.asa pourrait ressembler à ceci :

<script language="vbscript" runat="server">

sub Application_OnStart
'some code
end sub

sub Application_OnEnd
'some code
end sub

sub Session_OnStart
'some code
end sub

sub Session_OnEnd
'some code
end sub

</script>

Remarque : comme nous ne pouvons pas utiliser les délimiteurs de script ASP (<% et %>) pour insérer des scripts dans le fichier Global.asa, nous plaçons des sous-routines dans un élément HTML <script>.



<objet> Déclarations

Il est possible de créer des objets avec une portée de session ou d'application dans Global.asa à l'aide de la balise <object>.

Remarque : La balise <object> doit être en dehors de la balise <script> !

Syntaxe

<object runat="server" scope="scope" id="id" {progid="progID"|classid="classID"}>
....
</object>

Parameter Description
scope Sets the scope of the object (either Session or Application)
id Specifies a unique id for the object
ProgID An id associated with a class id. The format for ProgID is [Vendor.]Component[.Version]

Either ProgID or ClassID must be specified.

ClassID Specifies a unique id for a COM class object.

Either ProgID or ClassID must be specified.

Exemples

Le premier exemple crée un objet de portée de session nommé "MyAd" en utilisant le paramètre ProgID :

<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator">
</object>

Le deuxième exemple crée un objet de portée d'application nommé "MyConnection" en utilisant le paramètre ClassID :

<object runat="server" scope="application" id="MyConnection"
classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
</object>

Les objets déclarés dans le fichier Global.asa peuvent être utilisés par n'importe quel script de l'application :

GLOBAL.ASA:

<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator">
</object>

You could reference the object "MyAd" from any page in the ASP application:

SOME .ASP FILE:

<%=MyAd.GetAdvertisement("/banners/adrot.txt")%>

Déclarations TypeLibrary

Une TypeLibrary est un conteneur pour le contenu d'un fichier DLL correspondant à un objet COM. En incluant un appel à TypeLibrary dans le fichier Global.asa, les constantes de l'objet COM sont accessibles et les erreurs peuvent être mieux signalées par le code ASP. Si votre application Web s'appuie sur des objets COM qui ont déclaré des types de données dans des bibliothèques de types, vous pouvez déclarer les bibliothèques de types dans Global.asa.

Syntaxe

<!--METADATA TYPE="TypeLib"
file="filename" uuid="id" version="number" lcid="localeid"
-->

Parameter Description
file Specifies an absolute path to a type library.

Either the file parameter or the uuid parameter is required

uuid Specifies a unique identifier for the type library.

Either the file parameter or the uuid parameter is required

version Optional. Used for selecting version. If the requested version is not found, then the most recent version is used
lcid Optional. The locale identifier to be used for the type library

Valeurs d'erreur

Le serveur peut renvoyer l'un des messages d'erreur suivants :

Error Code Description
ASP 0222 Invalid type library specification
ASP 0223 Type library not found
ASP 0224 Type library cannot be loaded
ASP 0225 Type library cannot be wrapped

Remarque : les balises METADATA peuvent apparaître n'importe où dans le fichier Global.asa (à l'intérieur et à l'extérieur des balises <script>). Cependant, il est recommandé que les balises METADATA apparaissent en haut du fichier Global.asa.


Restrictions

Restrictions sur ce que vous pouvez inclure dans le fichier Global.asa :

  • Vous ne pouvez pas afficher le texte écrit dans le fichier Global.asa. Ce fichier ne peut pas afficher d'informations
  • Vous ne pouvez utiliser que les objets Serveur et Application dans les sous-routines Application_OnStart et Application_OnEnd. Dans la sous-routine Session_OnEnd, vous pouvez utiliser les objets Serveur, Application et Session. Dans la sous-routine Session_OnStart, vous pouvez utiliser n'importe quel objet intégré

Comment utiliser les sous-programmes

Global.asa est souvent utilisé pour initialiser des variables. 

L'exemple ci-dessous montre comment détecter l'heure exacte à laquelle un visiteur arrive pour la première fois sur un site Web. L'heure est stockée dans une variable Session nommée "started", et la valeur de la variable "started" est accessible depuis n'importe quelle page ASP de l'application :

<script language="vbscript" runat="server">
sub Session_OnStart
Session("started")=now()
end sub
</script>

Global.asa peut également être utilisé pour contrôler l'accès aux pages.

L'exemple ci-dessous montre comment rediriger chaque nouveau visiteur vers une autre page, dans ce cas vers une page appelée "newpage.asp":

<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
end sub
</script>

Et vous pouvez inclure des fonctions dans le fichier Global.asa.

Dans l'exemple ci-dessous, la sous-routine Application_OnStart se produit au démarrage du serveur Web. Ensuite, la sous-routine Application_OnStart appelle une autre sous-routine nommée "getcustomers". La sous-routine "getcustomers" ouvre une base de données et récupère un jeu d'enregistrements de la table "customers". Le jeu d'enregistrements est affecté à un tableau, où il est accessible depuis n'importe quelle page ASP sans interroger la base de données :

<script language="vbscript" runat="server">

sub Application_OnStart
getcustomers
end sub

sub getcustomers
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set rs=conn.execute("select name from customers")
Application("customers")=rs.GetRows
rs.Close
conn.Close
end sub

</script>

Exemple global.asa

Dans cet exemple, nous allons créer un fichier Global.asa qui compte le nombre de visiteurs actuels.

  • Application_OnStart définit la variable d'application "visiteurs" sur 0 au démarrage du serveur
  • La sous-routine Session_OnStart ajoute un à la variable "visiteurs" à chaque fois qu'un nouveau visiteur arrive
  • La sous-routine Session_OnEnd soustrait un des "visiteurs" chaque fois que cette sous-routine est déclenchée

Le fichier global.asa :

<script language="vbscript" runat="server">

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

Sub Session_OnStart
Application.Lock
Application("visitors")=Application("visitors")+1
Application.UnLock
End Sub

Sub Session_OnEnd
Application.Lock
Application("visitors")=Application("visitors")-1
Application.UnLock
End Sub

</script>

Pour afficher le nombre de visiteurs actuels dans un fichier ASP :

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>There are <%response.write(Application("visitors"))%> online now!</p>
</body>
</html>