Inclusions côté serveur  

Semblables aux directives de prétraitement, les inclusions côté serveur vous permettent d'inclure plusieurs valeurs (par exemple, la date de la dernière modification d'un fichier) ou un fichier complet dans votre script. Les directives d'inclusion côté serveur prises en charge par IIS sont les suivantes :

#config

Configure le format des messages d'erreur et des dates, ainsi que la taille des fichiers renvoyés au navigateur client.

#echo

Insère la valeur d'une variable d'environnement (équivalente aux différents éléments de la collection ServerVariable de l'objet Request) dans une page HTML client.

#exec

Insère le résultat d'une ligne de commande, commande shell ou application.

#flastmod

Insère la date/l'heure de la dernière modification de la page en cours.

#fsize

Insère la taille de fichier du fichier en cours.

#include

Inclut le contenu d'un autre fichier dans le fichier en cours.

Toutes les directives sont autorisées dans HTML, mais seule la directive #include est autorisée dans les pages HTML et les pages ASP. La directive #include est décrite en détail ci-dessous.

Inclusions côté serveur : Commentaires/Dépannage  
 
 

L'inclusion de fichiers est une excellente méthode pour écrire du code réutilisable. Elle est souvent utilisée pour le code apparaissant dans la plupart des scripts, par exemple pour établir une connexion à une base de données ou fermer une connexion une fois que votre code n'en a plus besoin. Bien que les fichiers d'inclusion ne requièrent pas d'extension spécifique, Microsoft propose l'extension .INC afin de mieux gérer les ensembles de scripts ASP et de fichiers d'inclusion dans vos projets. N'oubliez pas que vos fichiers d'inclusion côté serveur ne peuvent pas exécuter des inclusions cycliques (un ensemble de fichiers ne peut pas inclure un autre ensemble de fichiers) ou contenir des directives de prétraitement, comme décrit précédemment dans ce chapitre.

#include  
<!-- #include PathType = "strFileName" -->
 
<!-- #include PathType = "strFileName" -->

L'inclusion côté serveur #include vous permet d'insérer le contenu d'un fichier donné dans le contenu HTML ou le script ASP. Vous devez placer l'instruction de l'inclusion côté serveur #include dans un commentaire HMTL pour éviter d'afficher le texte de l'inclusion côté serveur comme texte direct.

 
Paramètres
PathType

Le type de chemin spécifié dans le paramètre strFileName. Les valeurs possibles du paramètre PathType sont décrites dans le tableau suivant :

Valeur PathType

Description

File

Considère la valeur du paramètre strFileName comme un chemin d'accès relatif à partir du répertoire sélectionné.

Virtual

Considère la valeur du paramètre strFileName comme un chemin d'accès virtuel complet.

strFileName

Le paramètre strFileName indique le nom du fichier dont vous souhaitez insérer le contenu dans le contenu HTML.

Une autre méthode d'inclusion de fichier a été introduite dans la version IIS 5.0. Vous pouvez utiliser la balise <SCRIPT> combinée avec l'attribut SRC en appliquant le format suivant :

<SCRIPT LANGUAGE = "VBScript" RUNAT=SERVER SRC="strFileName">
</SCRIPT>

Dans le code précédent, le paramètre strFileName est identique à celui utilisé avec la directive INCLUDE, et il peut être un chemin d'accès absolu ou relatif.

 
Exemple 1

Ce script contient seulement une simple ligne de code "retour au début" et une ligne horizontale avec un graphique.

<!--ReturnTop.INC -->
<CENTER>
<HR>
Click <A HREF = #top>here</A> to go back to the top of the page.<BR>
<IMG SRC = "/Images/CorpLogo.GIF"></CENTER><BR>

Vous pouvez maintenant inclure ce fichier chaque fois que vous souhaitez revenir au début d'une page.

<HTML>
<HEAD><TITLE>Include Example</TITLE></HEAD>
<BODY>
<%
[CODE TO RETRIEVE GLOSSARY TERMS FROM SQL SERVER DATABASE]
' Filter the recordset to include only the A's.
adoRecGlossary.Filter = "UPPER(SUBSTRING(GlossTerm, 1)) = 'A'"

' Iterate through the items in the filtered recordset.
Do While Not adoRecGlossary.EOF
%>
    Term: <%=adoRecGlossary("GlossTerm")%><BR>
    Definition: <%=adoRecGlossary("GlossDef")%><BR>
<%  
    adoRecGlossary.MoveNext
Loop

' Next include the link to top file:
%>
<!-- #include virtual = "/Includes/ReturnTop.INC" -->

<%
' Repeat for the next letter...
. . . [additional code]
%>
</BODY>
</HTML>
 
Exemple 2

Ce script contient du code ASP qui sera inclus dans un fichier en utilisant la balise <SCRIPT> combinée avec la méthode SRC :

' ReturnTop2.INC
Response.Write "<CENTER>"
Response.Write "<HR>"
Response.Write "Click <A HREF = #top>here</A> to go back to the top of the page.<BR>"
Response.Write "<IMG SRC = "/Images/CorpLogo.GIF"></CENTER><BR>"

Vous pouvez maintenant inclure ce fichier chaque fois que vous souhaitez revenir au début d'une page.

<HTML>
<HEAD>
<TITLE>Include Example 2</TITLE>
</HEAD>
This page will now include a file...<BR>
<SCRIPT LANGUAGE="VBScript" RUNAT="SERVER" SRC="ReturnTop2.INC">
</SCRIPT>
.
.
.
 
Remarques

L'utilisation de la directive INCLUDE vous permet d'inclure des fichiers contenant du code HTML ou ASP ou une combinaison des deux. L'utilisation de la méthode de balise SCRIPT (comme dans l'exemple précédent) vous permet d'inclure des fichiers ne contenant que du code ASP.

Les exemples montrent comment réduire les tâches redondantes en utilisant l'inclusion de fichiers. Toutefois, ces exemples sont très simples. Supposons un autre cas dans lequel vous devez inclure un fichier contenant le DSN de votre base de données, le nom d'utilisateur et le mot de passe. Vous pouvez utiliser le fichier d'inclusion partout sur votre site. Le changement du nom d'utilisateur et du mot de passe deviendrait alors une opération simple. Il suffirait de les modifier dans le fichier d'inclusion.

Si vous utilisez l'inclusion côté serveur #include pour intégrer le contenu d'un fichier ASP, vous devez placer tout script entre les signes <%...%>. Dans le cas contraire, le contenu du fichier est considéré comme du code HTML ordinaire.

Utilisez cette inclusion côté serveur pour localiser les parties de votre script qui sont utilisées souvent, par exemple les informations d'accès à la base de données. Vous pouvez également changer les noms d'utilisateur et les mots de passe rapidement et de manière efficace. Si vous envisagez d'utiliser l'inclusion côté serveur #include dans ce but, assurez-vous de sécuriser correctement tous les fichiers que vous utilisez.

Vous pouvez inclure des fichiers à l'intérieur de fichiers qui, à leur tour, sont inclus dans d'autres fichiers. Vous pouvez également inclure le contenu d'un fichier donné plusieurs fois dans le même script. Par exemple, vous pouvez créer un simple script de gestion des erreurs. Considérez le fichier suivant :

<%
If Err.Number <> 0 Then
%>
<HTML>
<HEAD><TITLE>Error Notice</TITLE></HEAD>
<BODY>
There has been an error in your script (<%=Request.
ServerVariables("SCRIPT_NAME")%>.<BR>
Please contact customer service at 1-800-555-HELP and tell 
them that you've experienced an error in (<%=Request.
ServerVariables("SCRIPT_NAME")%> and that the parameters sent to the 
script were the following:<BR>
(<%=Request.ServerVariables("QUERY_STRING")%>.<BR><BR>
We apologize for the inconvenience.
</BODY>
</HTML>
<%
End If
%>

Vous pouvez inclure ce fichier (nommé ERROR.INC dans cet exemple) dans les parties de votre script les plus sensibles aux erreurs. Par exemple, dans le code suivant, ERROR.INC est inséré une fois que la connexion ADO est établie et que l'objet de jeu d'enregistrements est créé (notez que la propriété de zone de mémoire tampon (Buffer) de l'objet de réponse (Response) doit être définie sur True) :

<%Response.Buffer = True%>
<HTML>
<HEAD><TITLE>Database Info Page</TITLE></HEAD>
<BODY>
<%
Set adoCon = Server.CreateObject("ADODB.Connection")
AdoCon.Open "MyDatabase"
%>
<!-- #include virtual = "/Accessory/ERROR.INC" -->
<%
Set adoRec = adoCon.Execute ("SELECT * FROM TopSales")
%>
<!-- #include virtual = "/Accessory/ERROR.INC" -->
<%
. . . [additional code]
%>
</BODY>

Dans ce script, si une erreur est générée à l'ouverture de la connexion de la base de données ou au moment de la création du jeu d'enregistrements, l'utilisateur voit le contenu du fichier ERROR.INC, contenant un avis d'erreur standard et un numéro de téléphone d'assistance.

Assurez-vous, lorsque vous incluez un fichier, que ce dernier ne contient pas le fichier en cours. Dans ce cas, une erreur d'arrêt de service survient sur le serveur Web. Vous devrez arrêter et relancer le service Web.

Gardez à l'esprit également que les inclusions côté serveur sont traitées avant tout code de script. Vous ne pouvez donc pas déterminer dynamiquement le fichier à inclure. Par exemple, le script suivant génère une erreur d'exécution :

<%
Dim strFileName
strFileName = "/Apps/CustomConstants.INC"
%>
<!-- #include file="<%=strFileName%>"-->

Enfin, vous devez placer les inclusions côté serveur hors des délimiteurs de script (<%...%>), des balises <SCRIPT></SCRIPT> et des balises <OBJECT></OBJECT>. Par exemple, le script suivant génère une erreur d'exécution (le délimiteur %> est manquant) :

<%
Dim strLastName
strLastName = "Weissinger"

<!-- #include file="/Apps/CustomConstants.INC"-->

Le code suivant est également voué à l'échec :

<SCRIPT LANGUAGE="VBScript">
Sub btnHello_Click( )
   Dim strLastName
    strLastName = "Weissinger"

    <!-- #include file="/Apps/CustomConstants.INC"-->

End Sub
</SCRIPT>

Cette inclusion côté serveur est la seule que vous pouvez utiliser avec les fichiers HTML et ASP. Si vous utilisez l'inclusion côté serveur #include dans un fichier, l'extension de ce fichier doit être l'une des extensions mappées sur SSINC.DLL, la bibliothèque de liens dynamique qui interprète les inclusions côté serveur.