Partager via


modules, élément <modules element>

Vue d’ensemble

L’élément <modules> définit les modules de code natif et les modules de code managé inscrits pour une application. Dans le cadre du traitement de pipeline de requête IIS (Internet Information Services), IIS appelle chaque module répertorié dans l’élément <modules> sur chaque requête. Vous utilisez généralement des modules pour implémenter des fonctionnalités personnalisées, telles que la sécurité, les statistiques et la journalisation, ou un traitement de contenu personnalisé, comme l’ajout d’en-têtes ou de pieds de page personnalisés.

L’élément <modules> contient une collection d’éléments <add>. Chaque élément définit un module activé pour l’application. Lorsque vous activez un module, vous l’autorisez à fournir son service pour une application particulière.

Si vous souhaitez activer un module natif, vous devez d’abord l’installer sur le serveur. Pour plus d’informations, consultez l’élément <globalModules>.

Vous n’avez pas besoin d’installer un module managé ; vous pouvez l’activer directement pour chaque application. Cela permet aux applications d’inclure leurs modules managés directement dans l’application en les inscrivant dans le fichier Web.config de l’application et en fournissant l’implémentation dans le répertoire /BIN ou /App_Code.

Compatibilité

Version Notes
IIS 10.0 L’élément <modules> n’a pas été modifié dans IIS 10.0.
IIS 8.5 L’élément <modules> n’a pas été modifié dans IIS 8.5.
IIS 8.0 L’élément <modules> n’a pas été modifié dans IIS 8.0.
IIS 7.5 L’élément <modules> n’a pas été modifié dans IIS 7.5.
IIS 7.0 L’élément <modules> a été introduit dans IIS 7.0.
IIS 6.0 S/O

Programme d’installation

L’élément <modules> est inclus dans l’installation par défaut d’IIS 7.

Procédure

Comment ajouter un module managé à une application

  1. Ouvrez le Gestionnaire Internet Information Services (IIS) :

    • Si vous utilisez Windows Server 2012 ou Windows Server 2012 R2 :

      • Dans la barre des tâches, cliquez sur Gestionnaire de serveur, sur Outils, puis sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows 8 ou Windows 8.1 :

      • Maintenez la touche Windows enfoncée, appuyez sur la lettre X, puis cliquez sur Panneau de configuration.
      • Cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Server 2008 ou Windows Server 2008 R2 :

      • Dans la barre des tâches, cliquez sur Démarrer, pointez sur Outils d’administration, puis cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Vista ou Windows 7 :

      • Dans la barre des tâches, cliquez sur Démarrer, puis sur Panneau de configuration.
      • Double-cliquez sur Outils d’administration, puis sur Gestionnaire Internet Information Services (IIS).
  2. Dans le volet Connexions, développez le nom du serveur, Sites, puis accédez au site web ou à l’application auquel vous souhaitez ajouter un module managé.

  3. Dans le volet Accueil, double-cliquez sur Modules.
    Screenshot of the Default Web Site Home page. The icon for Modules is highlighted.

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

  5. Dans la boîte de dialogue Ajouter un module managé, entrez le nom du module managé dans la zone Nom, puis entrez ou sélectionnez le type complet .NET Framework du module dans la zone Type.

  6. Sélectionnez l’option Appeler uniquement pour les requêtes adressées aux applications ASP.NET ou aux gestionnaires managés si vous souhaitez que le module réponde uniquement aux requêtes managées.
    Screenshot of the Add Managed Module dialog box.

  7. Cliquez sur OK.

Configuration

Vous configurez l’élément <modules> au niveau du serveur dans le fichier ApplicationHost.config et au niveau de l’application dans le fichier Web.config.

Attributs

Attribut Description
runAllManagedModulesForAllRequests Valeur booléenne facultative.

True si tous les modules managés peuvent traiter toutes les requêtes, même si la requête n’était pas destinée au contenu managé ; sinon, false.

Remarque : dans les sites web ASP.NET, la valeur de runAllManagedModulesForAllRequests devait précédemment être définie sur true pour prendre en charge le routage. Toutefois, une fois IIS 7 mis à jour avec un Service Pack, la valeur de runAllManagedModulesForAllRequests peut être définie sur false ou omise lors de l’utilisation du routage ASP.NET. Pour plus d’informations, consultez Routage ASP.NET sur le site web MSDN.

La valeur par défaut est false.
runManagedModulesForWebDavRequests Valeur booléenne facultative.

True si les modules managés peuvent traiter les requêtes WebDAV ; sinon, false.

La valeur par défaut est false.

Éléments enfants

Élément Description
add Élément facultatif.

Ajoute un module à la collection de modules.
clear Élément facultatif.

Supprime toutes les références aux modules de la collection modules.
remove Élément facultatif.

Supprime une référence à un module de la collection modules.

Exemple Configuration

L’exemple configure un module pour une application web s’exécutant en mode intégré IIS 7.

<configuration>
   <system.webServer>
      <modules>
         <add name="Header" type="Contoso.ShoppingCart.Header"/>
      </modules>
   </system.webServer>
</configuration>

Exemple de code

Remarque

Les exemples dans ce document illustrent l’utilisation d’un assembly de code managé qui a été stocké dans le Global Assembly Cache (GAC) .NET. Avant d’utiliser le code dans ces exemples pour déployer vos propres assemblys, vous devez récupérer les informations d’assembly à partir du GAC. Pour cela, utilisez les étapes suivantes :

  • Dans l’Explorateur Windows, ouvrez votre chemin C:\Windows\assembly, où C: est votre lecteur de système d’exploitation.
  • Recherchez votre assembly.
  • Cliquez avec le bouton droit sur l’assembly et cliquez sur Propriétés.
  • Copiez la valeur Culture, par exemple Neutre.
  • Copiez le numéro de version, par exemple 1.0.0.0.
  • Copiez la valeur du jeton de clé publique, par exemple 426f62526f636b73.
  • Cliquez sur Annuler.

Les exemples de code suivants activent un module managé pour un site web nommé Contoso. La propriété name définit le nom CartHeader pour le module, la propriété type définit le type managé pour le module, la propriété preCondition définit qu’IIS appelle le module uniquement pour les requêtes managées.

AppCmd.exe

appcmd.exe set config "Contoso" -section:system.webServer/modules /+"[name='CartHeader',type='Contoso.ShoppingCart.Header',preCondition='managedHandler']"

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetWebConfiguration("Contoso");
         ConfigurationSection modulesSection = config.GetSection("system.webServer/modules");
         ConfigurationElementCollection modulesCollection = modulesSection.GetCollection();

         ConfigurationElement addElement = modulesCollection.CreateElement("add");
         addElement["name"] = @"CartHeader";
         addElement["type"] = @"Contoso.ShoppingCart.Header";
         addElement["preCondition"] = @"managedHandler";
         modulesCollection.Add(addElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetWebConfiguration("Contoso")
      Dim modulesSection As ConfigurationSection = config.GetSection("system.webServer/modules")
      Dim modulesCollection As ConfigurationElementCollection = modulesSection.GetCollection

      Dim addElement As ConfigurationElement = modulesCollection.CreateElement("add")
      addElement("name") = "CartHeader"
      addElement("type") = "Contoso.ShoppingCart.Header"
      addElement("preCondition") = "managedHandler"
      modulesCollection.Add(addElement)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso";
var modulesSection = adminManager.GetAdminSection("system.webServer/modules", "MACHINE/WEBROOT/APPHOST/Contoso");
var modulesCollection = modulesSection.Collection;

var addElement = modulesCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "CartHeader";
addElement.Properties.Item("type").Value = "Contoso.ShoppingCart.Header";
addElement.Properties.Item("preCondition").Value = "managedHandler";
modulesCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso"
Set modulesSection = adminManager.GetAdminSection("system.webServer/modules", "MACHINE/WEBROOT/APPHOST/Contoso")
Set modulesCollection = modulesSection.Collection

Set addElement = modulesCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "CartHeader"
addElement.Properties.Item("type").Value = "Contoso.ShoppingCart.Header"
addElement.Properties.Item("preCondition").Value = "managedHandler"
modulesCollection.AddElement addElement

adminManager.CommitChanges()