Directives de prétraitement  

Les pages ASP (Active Server Pages) fournissent des directives de prétraitement semblables aux directives du compilateur en langage C et dans d'autres langages similaires. Tout comme ces directives de précompilation, les directives ASP donnent pour instruction au serveur Web d'effectuer une fonction avant la fin d'exécution du script et l'envoi au client. Le serveur Web effectue les autres directives avant d'interpréter le script. Les directives ASP, à l'exception de la directive <%= expression %>, doivent apparaître sur la première ligne du script, et vous ne pouvez pas les inclure en utilisant un fichier d'inclusion côté serveur. Le format de ces directives (tout en tenant compte de l'exception de la directive <%= expression %> indiquée au-dessus) se présente comme suit :

<%@ DIRECTIVE=Value%>

DIRECTIVE représente l'une des directives ASP répertoriées dans cette section et Value représente une valeur valide pour la directive. Notez que vous devez insérer un espace entre le caractère @ et la directive, et que vous devez placer la directive de prétraitement entre les délimiteurs <%...%>.

Les directives de prétraitement ASP valides sont répertoriées ci-dessous, et elles sont examinées en détail plus loin dans ce chapitre.

  • CODEPAGE
  • ENABLESESSIONSTATE
  • LANGUAGE
  • LCID
  • TRANSACTION
Directives de prétraitement : Commentaires/Dépannage  
 
 

L'espace entre le caractère @ et la directive, ainsi que le placement conditionnel des directives sur la première ligne du script sont les éléments syntaxiques les plus importants d'une directive ASP. Le non-respect de ces conditions est la cause la plus commune d'erreur lors de l'utilisation de directives.

Il est important de savoir comment vous pouvez utiliser plusieurs directives dans un script, sachant que vous devez les placer, à l'exception de la directive <%= expression %>, sur la première ligne du script. Pour inclure plusieurs directives, utilisez la syntaxe suivante :

<%@ DIRECTIVE1=ValueDIRECTIVE2=Value %>

Vous devez inclure au moins un espace entre chaque directive et veiller à ne pas insérer d'espaces de part et d'autre des signes égal à (=).

CODEPAGE  
<%@CODEPAGE=uintCodePage%>
 

Définit le jeu de caractères (ou page de code) à utiliser pour l'interprétation du script sur le serveur. Les différentes langues et zones géographiques utilisent des pages de code uniques. Cette directive fournit une fonction pour l'interprétation des scripts sur le serveur similaire à celle de la propriété CodePage de l'objet Session pour l'interprétation côté client du code HTML envoyé au client. Toutefois, il est important de noter que la directive de prétraitement CODEPAGE impose la méthode d'interprétation du script lui-même, alors que la propriété CodePage de l'objet Session impose la méthode de traitement du HTML obtenu.

 
Paramètres
uintCodePage

Un entier non signé correspondant à une page de code valide pour le serveur Web exécutant le script AS.

 
Exemple
<%@ CODEPAGE=932%>

' This code sets the code page to OEM 932, which is
' used for Japanese Kanji.
 
Remarques

Vous pouvez inclure la directive CODEPAGE et la propriété CodePage pour l'objet Session dans le même script. Le script côté serveur sera ainsi interprété en utilisant le nombre entier non signé défini pour la directive CODEPAGE, et les informations client seront interprétées en utilisant la page de code définie dans la propriété CodePage de l'objet Session.

 
ENABLESESSIONSTATE  
<%@ ENABLESESSIONSTATE=True|False%>
 

Active (True) ou désactive (False) le stockage des informations sur les sessions spécifiques aux utilisateurs. Cette valeur est True (vraie) par défaut.

 
Paramètres

Aucun

 
Exemple
<%@ ENABLESESSIONSTATE=False%>

' This code prevents the web server from storing
' user session information.
 
Remarques

Vous pouvez également activer le stockage des états de session en utilisant le registre, mais cette directive est bien plus flexible (vous pouvez l'appliquer script par script). Si vous avez utilisé un paramètre de registre pour contrôler les informations sur les états de session, cette directive annule alors ce paramètre.

Si vous définissez cette directive sur False (fausse), vous ne pourrez pas stocker des informations contenues dans les variables ou objets d'étendue session. Vous devrez faire appel à d'autres méthodes pour conserver les informations sur les utilisateurs, si nécessaire. Toutefois, vous pouvez profiter de certains avantages.

    Cette directive ne dépend pas des cookies dans les navigateurs des clients.

    Elle améliore la vitesse de traitement du script de votre serveur par le serveur Web.

 
LANGUAGE  
<%@ LANGUAGE=ScriptingEngine%>
 

Définit le moteur de script par défaut qui sera utilisé par le serveur Web pour traiter le script dans vos pages ASP. Le moteur VBScript est défini par défaut.

 
Paramètres
ScriptingEngine

Un moteur de script valide reconnu par Internet Information Server. Les moteurs de script valides incluent VBScript, JScript, PerlScript, Python et REXX.

 
Exemple
<%@ LANGUAGE="JScript"%>

' This code sets the language for the current page to
' JScript, Microsoft's interpretation of the JavaScript
' scripting language. All script on this page will be 
' interpreted using the JScript DLL.
 
Remarques

La définition de la directive LANGUAGE ne vous empêche pas d'utiliser d'autres moteurs de script sur votre page de script. Elle ne définit que le moteur de script par défaut pour l'interprétation de script sur la page en cours. L'exemple ci-dessous illustre comment définir le moteur de script par défaut pour la page sur JScript, mais utiliser VBScript pour une procédure spécifique.

<%@ LANGUAGE="JScript"%>
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub ShowReport( )
	' This script will be interpreted using the VBScript 
	' scripting engine. 
End Sub
</SCRIPT>

En outre, la définition de la valeur de la directive LANGUAGE n'a aucun effet sur le moteur de script utilisé sur le client. Même si vous définissez le langage LANGUAGE du script côté serveur sur PerlScript, par exemple, vous pouvez toujours définir l'attribut LANGUAGE de la balise <SCRIPT> côté client sur JScript, comme indiqué ci-dessous :

<%@ LANGUAGE="PerlScript"%>

<%
' All server-side script is interpreted using the PerlScript
' scripting engine.
%>

HTML here...
<SCRIPT LANGUAGE="JScript">
function btnReport_onClick
    ' This script will be interpreted using the JScript 
    ' scripting engine.
End Sub
</SCRIPT>

Notez que seulement les moteurs de script VBScript et JScript sont inclus avec IIS. Vous devez vous procurer et installer séparément tous les autres moteurs de script.

 
LCID  
<%@ LCID=dwordLCID%>
 

Définit un identificateur local valide pour un script donné. Cette directive spécifie divers formats (par exemple, les dates et l'heure) à utiliser pour les données côté serveur.

 
Paramètres
dwordLCID

Une valeur DWORD (32 bits non signés) représentant un identificateur local valide.

 
Exemple
<%@ LCID=1036%>

' This code sets the locale ID for the server-side
' script to that for French.
 
Remarques

De même que la définition de la directive CODEPAGE n'a aucun effet sur la propriété CodePage de l'objet Session ou sur le jeu de caractères utilisé côté client, la définition de la directive LCID n'a aucun effet sur le LCID utilisé côté client. Toutefois, il est important de noter que la directive de prétraitement LCID impose la méthode d'interprétation du script lui-même, alors que la propriété LCID de l'objet Session impose la méthode de traitement du HTML obtenu.

 
TRANSACTION  
<%@ TRANSACTION=strValue%>
 

Donne pour instruction au serveur Web de traiter le script entier comme une seule transaction. Si vous définissez le script comme nécessitant une transaction, le serveur Web utilise Microsoft Transaction Server pour assurer que le script entier est traité comme une seule unité (ou transaction), ou n'est pas traité du tout. Actuellement, uniquement la manipulation de bases de données est disponible dans les transactions.

 
Paramètres
strValue

Les valeurs du paramètre strValue sont les suivantes :

Required

Indique au serveur Web que le script en cours requiert une transaction.

Requires_New

Indique au serveur Web que le script en cours requiert une nouvelle transaction.

Supported

Indique au serveur Web de ne pas commencer une transaction.

Not_Supported

Indique au serveur Web de ne pas commencer une transaction.

 
Exemple
<%@ TRANSACTION=Required%>

' This code instructs the web server to start a new
' transaction for the current script.
 
Remarques

Notez que la valeur pour la directive TRANSACTION n'est pas une chaîne. Par conséquent, vous devez utiliser un trait de soulignement pour les valeurs comprenant un espace (Requires_New et Not_Supported). Comme décrit dans le chapitre 6, un seul script peut être encapsulé dans une transaction. Vous devez vous assurer que la directive TRANSACTION apparaît sur la première ligne dans un script transactionnel. Dans le cas contraire, une erreur survient. Enfin, vous ne pouvez pas encapsuler le code GLOBAL.ASA dans une transaction.

Si une erreur survient dans un script encapsulé dans une transaction, Microsoft Transaction Server revient en arrière sur toutes les actions prenant en charge les transactions. Actuellement, uniquement les actions de base de données prennent en charge les transactions. Par exemple, les activités des disques ne sont pas toutes prises en charge par les transactions basées sur MTS. Vous devrez donc procéder à un retour en arrière manuel.