Partager via


Procédure pas à pas : configuration d'applications ASP.NET dans IIS 7.0

Mise à jour : novembre 2007

Si une application Web ASP.NET est hébergée dans IIS 7.0, vous pouvez définir des paramètres de configuration pour l'application de différentes manières. Notamment :

  • À l'aide du Gestionnaire des services IIS. Pour plus d'informations, consultez Comment : ouvrir le Gestionnaire des services IIS et Internet Information Services (IIS) Manager.

  • En modifiant directement le fichier Web.config. Vous pouvez effectuer cette opération dans Visual Studio ou dans Visual Web Developer, ou à l'aide d'un programme d'édition de texte.

  • À l'aide de l'outil en ligne de commande IIS 7.0 (Appcmd.exe). Cet utilitaire vous permet de spécifier des paramètres de configuration IIS ainsi que des paramètres de configuration d'application Web. Pour plus d'informations, consultez IIS 7.0 Command-Line Tool.

  • À l'aide de Windows Management Instrumentation (WMI). L'espace de noms WebAdministration du fournisseur WMI IIS 7.0 contient des classes et des méthodes qui vous permettent de créer du script pour les tâches d'administration de sites Web, d'applications Web et de leurs objets et propriétés associés. Pour plus d'informations, consultez IIS 7.0 : WMI.

IIS 7.0 présente une architecture modulaire qui vous permet de spécifier les modules composant les fonctionnalités d'un serveur Web. Si IIS 7.0 est installé, par défaut, de nombreux modules ne sont pas activés. Lorsque vous travaillez avec des sites Web ASP.NET, il peut s'avérer utile d'activer les modules suivants :

  • Module IIS 6 Management Compatibility, qui permet à Visual Studio d'utiliser des appels de métabase pour interagir avec le magasin de configuration IIS 7.0.

  • Module Windows Authentication, qui vous permet de déboguer des applications Web dans Visual Studio.

Pour plus d'informations, consultez Exécution d'applications Web sous Windows Vista avec IIS 7.0 et Visual Studio et Exécution d'applications Web sous Windows Server 2008 avec IIS 7.0 et Visual Studio.

Dans cette procédure pas à pas, vous allez définir des paramètres de configuration à l'aide d'Gestionnaire des services IIS, avant d'observer comment ces paramètres sont répercutés dans le fichier Web.config d'une application Web. Cette procédure pas à pas décrit notamment les tâches suivantes :

  • Création d'un module de code managé personnalisé et localisation du module dans le répertoire App_Code d'une application Web.

  • Inscription du module personnalisé à l'aide du Gestionnaire des services IIS.

  • Ajout d'un en-tête HTTP personnalisé à l'aide du Gestionnaire des services IIS.

Les fonctionnalités du module ne sont pas importantes dans cette procédure pas à pas, qui est consacrée à la manière dont le module est intégré dans le pipeline de demande et celle dont la configuration de l'application à l'aide du Gestionnaire des services IIS affecte le fichier Web.config.

Composants requis

Pour exécuter cette procédure pas à pas, vous devez disposer des composants suivants :

  • IIS 7.0 installé et exécuté sous Windows Vista ou sous Windows Server 2008.

  • Au moins un pool d'applications fonctionnant au mode intégré d'IIS 7.0.

  • Module IIS 6 Management Compatibility activé dans IIS 7.0.

  • Visual Studio 2008.

  • .NET Framework version 3.0 ou version ultérieure.

  • Autorisations d'administration sur votre ordinateur.

  • Outil permettant d'examiner des requêtes et des réponses HTTP entre votre ordinateur et les serveurs Web, tels que l'outil Fiddler, disponible sur le site Fiddler Web Debugging Proxy.

    Remarque :

    Fiddler est un outil tiers non pris en charge par Microsoft.

Création d'un module HTTP personnalisé

Pour commencer, vous allez créer un site Web.

Pour créer un site Web

  1. Dans Visual Studio, créez un site Web HTTP local nommé ProcédureIIS7.

    Pour plus d'informations sur la création d'un site Web IIS local, consultez Procédure pas à pas : création d'un site Web IIS local dans Visual Web Developer.

  2. Dans le menu Démarrer, cliquez sur Tous les programmes, Accessoires, Exécuter.

  3. Dans la zone Ouvrir, tapez inetmgr, puis cliquez sur OK.

    Remarque :

    Si le Contrôle de compte d'utilisateur (UAC, User Account Control) est activé, il est possible qu'un message s'affiche alors que vous tentez d'accéder au Gestionnaire des services IIS. Si tel est le cas, cliquez sur Continuer. Pour plus d'informations, consultez User Account Control.

  4. Vérifiez que le site Web se trouve dans un pool d'applications qui s'exécute en mode intégré.

    Pour plus d'informations sur la définition du mode d'une application Web, consultez Configure the Request-Processing Mode for an Application Pool.

Vous pouvez maintenant créer le module HTTP personnalisé.

Pour créer un module HTTP personnalisé

  1. Dans Visual Studio, ouvrez l'Explorateur de solutions, cliquez avec le bouton droit sur le nœud du projet Web, puis cliquez sur Ajouter un nouvel élément.

    La boîte de dialogue Ajouter un nouvel élément s'affiche.

  2. Sous Modèles Visual Studio installés, sélectionnez Classe.

  3. Sélectionnez le langage de programmation que vous souhaitez utiliser.

  4. Pour le nom de la classe, entrez ModulePersonnalisé, puis cliquez sur Ajouter.

    Si le site Web ne contient pas de dossier App_Code, un message s'affiche et vous demande si vous souhaitez placer la classe dans le dossier App_Code. Si tel est le cas, cliquez sur Oui.

  5. Dans le fichier de classe, supprimez le code existant et remplacez-le par le code suivant :

    Imports System
    Imports System.Configuration
    Imports System.Web
    Imports System.Web.Security
    Imports System.Web.UI
    
    Public Class CustomModule
        Implements IHttpModule
    
        Public Sub New()
            ' Constructor
        End Sub
    
        Public Sub Init(ByVal app As HttpApplication) Implements IHttpModule.Init
            AddHandler app.BeginRequest, AddressOf Me.BeginRequest
        End Sub
    
    
        Public Sub BeginRequest(ByVal source As Object, ByVal e As EventArgs)
            Dim app As HttpApplication = CType(source, HttpApplication)
            Dim cont As HttpContext = app.Context
            Dim notification As String = cont.CurrentNotification.ToString()
            Dim postNotification As String = cont.IsPostNotification.ToString()
            cont.Response.Headers.Set("CustomHeader2", "ASPX, Event = " & notification & _
                    ", PostNotification = " & postNotification + _
                    ", DateTime = " & DateTime.Now.ToString())
    
        End Sub
    
        Public Sub Dispose() Implements IHttpModule.Dispose
        End Sub
    End Class
    
    using System;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    
    public class CustomModule : IHttpModule
    {
        public CustomModule()
        {
            // Constructor
        }
        public void Init(HttpApplication app)
        {
            app.BeginRequest += new EventHandler(BeginRequest);
        }
        public void BeginRequest(object source, EventArgs e)
        {
    
            HttpApplication app = (HttpApplication)source;
            HttpContext cont = app.Context;
            string notification = cont.CurrentNotification.ToString();
            string postNotification = cont.IsPostNotification.ToString();
            cont.Response.Headers.Set("CustomHeader2", "ASPX, Event = " + notification +
                    ", PostNotification = " + postNotification +
                    ", DateTime = " + DateTime.Now.ToString());
    
        }
        public void Dispose()
        {
        }
    }
    

    Le code fait les choses suivantes :

    • Définit un module de code managé personnalisé qui implémente l'interface IHttpModule.

    • Définit un gestionnaire d'événements pour l'événement BeginRequest de l'instance HttpApplication. Le gestionnaire d'événements définit un en-tête personnalisé à ajouter à la collection d'en-têtes de réponse.

    • Ajoute le gestionnaire au pipeline de demande pour la notification dans la méthode Init du module.

    Parce qu'elle implémente l'interface IHttpModule, la classe doit implémenter une méthode Init et une méthode Dispose. La méthode Dispose dans ce module ne joue aucun rôle, mais elle vous permet d'implémenter la logique dispose, si nécessaire.

  6. Dans le menu Générer, cliquez sur Générer le site Web pour vous assurer que le module ne contient aucune erreur.

La dernière tâche de cette section consiste à créer des pages ASP.NET et HTML qui vous permettront, plus tard dans notre procédure pas à pas, de tester le module personnalisé.

Pour créer des pages de test ASP.NET et HTML

  1. Ajoutez au dossier racine de l'application une nouvelle page Web ASP.NET à fichier unique nommée ASPXpage.aspx.

  2. Supprimez le balisage existant et remplacez-le par le balisage suivant :

    <%@ Page Language="VB" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script >
    
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head >
        <title>ASPX Module Test Page</title>
    </head>
    <body>
        <form id="form1" >
        <div>
        <%= Response.Headers.Get("CustomHeader2").ToString() %>
        </div>
        </form>
    </body>
    </html>
    
    <%@ Page Language="C#" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script >
    
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head >
        <title>ASPX Module Test Page</title>
    </head>
    <body>
        <form id="form1" >
        <div>
        <%= Response.Headers.Get("CustomHeader2").ToString() %>
        </div>
        </form>
    </body>
    </html>
    
  3. Ajoutez au dossier racine de l'application Web une nouvelle page HTML nommée HTMLPage.htm.

  4. Ajoutez le balisage suivant à la page HTML.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>HTML Module Test Page</title>
    </head>
    <body>
        <div>
           HTML page.
           <br />
        </div>
    </body>
    </html>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>HTML Module Test Page</title>
    </head>
    <body>
        <div>
           HTML page.
           <br />
        </div>
    </body>
    </html>
    
  5. Enregistrez toutes les modifications.

  6. Exécutez individuellement la page ASPXpage.aspx et la page HTMLpage.htm afin de vous assurer qu'elles peuvent s'afficher dans un navigateur.

    Remarque :

    Laissez l'application Visual Studio ouverte. Vous y reviendrez pour vérifier les modifications de configuration que vous apporterez à l'aide du Gestionnaire des services IIS.

À ce stade, les pages fonctionnent mais n'appellent pas le module personnalisé. Dans la procédure suivante, vous allez ajouter le module personnalisé au pipeline de demande.

Modification de la configuration à l'aide du Gestionnaire des services IIS

Dans cette section, vous allez utiliser le Gestionnaire des services IIS afin de définir divers paramètres de configuration de l'application IIS. Vous devrez inscrire le module personnalisé, ajouter un en-tête personnalisé et désactiver la compression statique.

Pour inscrire le module de code managé personnalisé

  1. Dans le menu Démarrer, cliquez sur Tous les programmes, Accessoires, Exécuter.

  2. Dans la zone Ouvrir, tapez inetmgr, puis cliquez sur OK.

    Remarque :

    Si le Contrôle de compte d'utilisateur (UAC, User Account Control) est activé, il est possible qu'un message s'affiche alors que vous tentez d'accéder au Gestionnaire des services IIS. Si tel est le cas, cliquez sur Continuer. Pour plus d'informations, consultez User Account Control.

  3. Dans le volet Connexions, développez le nom de l'ordinateur ou du serveur qui héberge le site Web.

  4. Développez le dossier Sites.

  5. Sélectionnez le site Web ProcédureIIS7. Dans Windows Server 2008, si l'application Web est une application d'un site Web, développez d'abord ce site Web puis sélectionnez ProcédureIIS7.

    Par défaut, le volet central du Gestionnaire des services IIS affiche des options de configuration du serveur Web par zone. Pour l'application Web ProcédureIIS7, deux zones existent : ASP.NET et IIS.

  6. Dans la section IIS du volet central, double-cliquez sur l'icône Modules.

    Les informations des Modules dans le volet central répertorient tous les modules actuellement configurés pour IIS.

  7. Dans le volet Actions, cliquez sur Ajouter un module managé.

    La boîte de dialogue Ajouter un module managé s'affiche.

  8. Entrez ModulePersonnalisé dans la zone Nom.

    Le nom peut être tout mot ou expression qui décrit le module. Dans cette procédure pas à pas, vous utiliserez simplement le nom du module.

  9. Dans la liste Type, sélectionnez ou tapez le nom qualifié complet de type managé pour le module.

    Le type ModulePersonnalisé apparaît dans la liste car la configuration IIS inclut dans le dossier App_Code toute classe implémentant IHttpModule.

  10. Assurez-vous que la case à cocher Appeler uniquement pour les demandes vers les applications ASP.NET ou les gestionnaires de code managé n'est pas activée.

    Dans le cadre de cette procédure pas à pas, nous voulons que le module s'applique à toutes les demandes du pipeline, pas seulement aux demandes ASP.NET.

  11. Cliquez sur OK.

    Le module de code managé est ajouté à la liste de modules. Il est possible que vous deviez faire défiler la liste ou la retrier pour voir le module ajouté.

Pour ajouter un en-tête de réponse personnalisé

  1. Dans le volet gauche du Gestionnaire des services IIS, cliquez sur le nom du nœud ProcédureIIS7 afin d'ouvrir le volet de configuration principal du site.

  2. À partir du volet central, dans la section des paramètres IIS, double-cliquez sur l'icône En-têtes de réponse HTTP.

    Les informations de la fonctionnalité En-têtes de réponse HTTP s'affichent dans le volet central. Tous les en-têtes de réponse HTTP définis actuellement sont répertoriés.

  3. Dans le volet Actions, cliquez sur Ajouter.

    La boîte de dialogue Ajouter un en-tête de réponse HTTP personnalisé s'ouvre.

  4. Dans la zone de texte Nom, entrez EntêtePersonnalisé1.

    Le nom peut être tout mot ou expression qui décrit l'en-tête.

  5. Dans la zone de texte Valeur, tapez la valeur ExempleEntête.

Vous allez maintenant désactiver la compression statique. Cette opération permet d'éviter la compression du contenu statique tel que des pages HTML.

Pour désactiver la compression statique

  1. Cliquez sur le nom du nœud ProcédureIIS7 dans le volet gauche afin d'afficher le volet de configuration principal du site dans le volet central.

  2. Dans le volet central du Gestionnaire des services IIS, double-cliquez sur l'icône Compression de la section des paramètres IIS.

    Les informations de la fonctionnalité Compression s'affichent dans le volet central.

  3. Assurez-vous que la case à cocher Activer la compression du contenu statique est désactivée.

Vérification des modifications de configuration dans Visual Studio

Cette procédure pas à pas vous a permis de réaliser des tâches de configuration à l'aide du Gestionnaire des services IIS. Dans cette procédure, vous allez observer les modifications apportées dans le fichier Web.config de l'application.

Pour vérifier l'inscription du module dans le fichier Web.config

  1. Revenez à l'application Visual Studio et à l'application ProcédureIIS7.

  2. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nom du site Web, puis cliquez sur Actualiser le dossier.

    La vue Visual Studio du dossier du site Web se synchronise alors avec le dossier et les fichiers du disque.

    Si l'application Web ne contenait pas de fichier Web.config au départ, elle en comporte un désormais. Si l'application contenait déjà un fichier Web.config, les modifications ont été apportées à ce dernier.

  3. Dans l'Explorateur de solutions, double-cliquez sur le fichier Web.config pour en afficher le contenu.

    La section system.webServer inclut les modifications de configuration que vous avez apportées à l'aide du Gestionnaire des services IIS. La section system.webServer contient les éléments enfants suivants :

    • Un élément modules qui inscrit le module personnalisé pour le pipeline de traitement de demande.

    • Un élément httpProtocol qui définit l'en-tête de réponse personnalisé.

    • Un élément urlCompression qui désactive la compression statique.

    La section system.webServer se présentera comme dans l'exemple suivant :

    <system.webServer>
      <modules>
        <add name="CustomModule" type="CustomModule" preCondition="" />
      </modules>
      <httpProtocol>
        <customHeaders>
          <add name="CustomHeader1" value="SampleHeader" />
        </customHeaders>
      </httpProtocol>
      <urlCompression doStaticCompression="false" />
    </system.webServer>
    

    Pour plus d'informations sur la section system.webServer, consultez Utilisation de la configuration ASP.NET et IIS 7.0 : system.webServer Section Group (IIS Settings Schema).

Test du module personnalisé

IIS 7.0 dispose d'un pipeline de demande intégré. Les demandes pour toutes les ressources d'application (telles qu'une page .aspx ou une page .htm) peuvent déclencher des notifications de pipeline dans un module de code managé comme le module personnalisé que vous avez créé dans cette procédure pas à pas.

Remarque :

Lorsque vous avez configuré le module de code managé dans le Gestionnaire des services IIS, vous n'avez pas sélectionné l'option Appeler uniquement pour les demandes vers les applications ASP.NET ou les gestionnaires de code managé. Si vous l'aviez sélectionnée, le module personnalisé recevrait uniquement des notifications de pipeline pour les ressources ASP.NET et pas pour les ressources statiques telles que les fichiers HTML.

Pour vérifier que le module personnalisé s'applique à toutes les ressources

  1. Dans Visual Studio, ouvrez la page ASPXpage.aspx et appuyez sur CTRL+F5 pour afficher la page dans un navigateur.

    L'en-tête personnalisé défini dans le module apparaît dans le navigateur. Dans la page ASP.NET, vous ne pouvez pas accéder à l'en-tête personnalisé défini par IIS, car les informations d'en-tête sont ajoutées après le rendu du contenu de la page au flux de données. Toutefois, vous pouvez confirmer que l'en-tête est défini à l'aide d'un outil qui surveille le trafic HTTP, tel que Fiddler.

  2. Ouvrez l'outil d'analyse de trafic HTTP et actualisez la page ASPXpage.aspx dans le navigateur.

    Remarque :

    Si l'URL de la page ASPXpage.aspx utilise le terme « localhost », remplacez celui-ci par le nom de l'ordinateur sur lequel IIS 7.0 est installé. Dans un scénario de développement type, il s'agit également de l'ordinateur sur lequel Visual Studio s'exécute.

  3. Vérifiez que EntêtePersonnalisé1 et EntêtePersonnalisé2 apparaissent dans la collection d'en-têtes de la réponse.

  4. Affichez la page HTMLPage.htm dans un navigateur.

  5. Vérifiez que EntêtePersonnalisé1 et EntêtePersonnalisé2 apparaissent dans la collection d'en-têtes de la réponse.

Étapes suivantes

Cette procédure pas à pas vous a fourni une introduction à la configuration d'ASP.NET dans IIS 7.0. Les paramètres de configuration du serveur Web IIS 7.0 et d'ASP.NET sont unifiés dans un fichier de configuration que vous pouvez modifier via une interface d'administration unique.

Vous pouvez également explorer d'autres paramètres du Gestionnaire des services IIS et observer la manière dont les modifications sont répercutées dans le fichier de configuration. Pour plus d'informations, consultez Internet Information Services (IIS) Manager.

Voir aussi

Tâches

Procédure pas à pas : configuration d'applications ASP.NET dans IIS 6.0 à l'aide de MMC

Concepts

Déplacement d'une application ASP.NET d'IIS 6.0 vers IIS 7.0

Autres ressources

Configuring Modules in IIS 7.0

Configuring HTTP Response Headers in IIS 7.0