Partager via


Gestionnaires <gestionnaires>

Vue d’ensemble

L’élément <handlers> définit les gestionnaires inscrits pour une extension ou une URL de nom de fichier spécifique.

Les gestionnaires sont des composants IIS (Internet Information Services) configurés pour traiter les demandes à un contenu spécifique, généralement pour générer une réponse pour la ressource de requête. Par exemple, une page web ASP.NET est un type de gestionnaire. Vous pouvez utiliser des gestionnaires pour traiter les demandes adressées à n’importe quelle ressource qui doit retourner des informations aux utilisateurs qui ne sont pas un fichier statique. IIS fournit plusieurs types de gestionnaires différents pour prendre en charge les fichiers statiques, les applications CGI (Common Gateway Interface), les applications FastCGI et les extensions ISAPI (Internet Server API). ASP.NET fournit également un support pour les types de gestionnaire supplémentaires via l’interface du gestionnaire HTTP.

Les développeurs peuvent créer des gestionnaires personnalisés pour effectuer une gestion spéciale que vous pouvez identifier à l’aide d’extensions de nom de fichier dans votre application. Par exemple, si un développeur a créé un gestionnaire au format XML au format RSS, vous pouvez lier l’extension de nom de fichier .rss dans votre application au gestionnaire personnalisé. Les développeurs peuvent également créer des gestionnaires qui mappent à un fichier spécifique et peuvent implémenter ces gestionnaires en tant que modules natifs ou en tant qu’implémentations de l’interface ASP.NET IHttpHandler.

Compatibilité

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

Programme d’installation

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

Procédure

Création d’un mappage de gestionnaire pour un gestionnaire de ASP.NET dans une application IIS 7 s’exécutant en mode intégré

  1. Ouvrez le Gestionnaire des services Internet (IIS) :

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

      • Dans la barre des tâches, cliquez sur Gestionnaire de serveur, cliquez 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 :

      • Cliquez sur Démarrer, placez le curseur 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 double-cliquez sur Gestionnaire Internet Information Services (IIS).
  2. Dans le volet Connexions, cliquez sur la connexion du serveur à laquelle vous souhaitez ajouter le module natif.

  3. Dans le volet Accueil, double-cliquez sur Mappages de gestionnaires.
    Screenshot of Home pane with Handler Mappings feature selected.

  4. Sur le volet Actions, cliquez sur Ajouter un gestionnaire de module...

  5. Dans la boîte de dialogue Ajouter un gestionnaire managé, spécifiez les éléments suivants :

    • Chemin de requête. Le nom de fichier ou l’extension de nom de fichier à mapper.

    • Type. Le nom du type (classe) du gestionnaire managé. Si le gestionnaire est défini dans les dossiers app_code ou bin de l’application, son nom de type apparaît dans la liste déroulante.

    • Nom. Un nom descriptif.

      Screenshot shows Add Managed Handler dialog box with fields for Request Path, Type and Name.

  6. Cliquez sur OK pour fermer la boîte de dialogue Ajouter un gestionnaire managé.

Comment créer un mappage de gestionnaire FastCGI

  1. Ouvrez le Gestionnaire des services Internet (IIS) :

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

      • Dans la barre des tâches, cliquez sur Gestionnaire de serveur, cliquez 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 :

      • Cliquez sur Démarrer, placez le curseur 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 double-cliquez sur Gestionnaire Internet Information Services (IIS).
  2. Dans le volet Connexions, cliquez sur le nom du serveur pour lequel vous souhaitez configurer les mappages de gestionnaires FastCGI.

  3. Dans le volet Accueil, double-cliquez sur Mappages de gestionnaires.
    Screenshot displays Server Home pane with Handler Mappings feature selected.

  4. Dans le volet Actions, cliquez sur Ajouter un mappage de modules...

    Remarque

    Pour que les prochaines étapes fonctionnent, vous devez avoir déjà installé des fichiers binaires qui exécutent le chemin d’accès du fichier ou l’extension de nom de fichier que vous spécifiez. Cet exemple utilise une implémentation PHP disponible sur le site web Microsoft.

  5. Tapez l’extension de nom de fichier, telle que .php dans la case Chemin d'accès de la requête, cliquez sur FastCGIModule dans la liste déroulante Module, tapez le chemin d’accès au moteur de script (dans cet exemple, PHP-CGI.exe) dans la case Exécutable, puis cliquez sur OK.
    Screenshot of Add Module Mapping dialog box with Fast C G I Module selected from the Module drop down list.

  6. Sur la boîte de dialogue Ajouter un mappage de module, cliquez sur Oui.
    Screenshot shows Add Module Mapping dialog box asking if you want to create a Fast C G I application for the executable.

Configuration

L’élément <handlers> contient une collection d’éléments <add>, chacun d’entre eux définissant un mappage de gestionnaire pour l’application. L’élément <add> contient le nom du gestionnaire, l’extension de nom de fichier ou le masque de chemin d’accès d’URL auquel le gestionnaire est mappé, ainsi que le nom du module ou ASP.NET type de gestionnaire HTTP qui spécifie l’implémentation du gestionnaire, entre autres paramètres.

Vous pouvez configurer l’élément <handlers> au niveau de l’application dans le fichier Web.config.

Attributs

Attribut Description
accessPolicy Attribut d’indicateurs facultatifs.

Spécifie les types d’accès autorisés pour la collection complète de gestionnaires.

L’attribut accessPolicy peut être l’une des valeurs possibles suivantes. Par défaut, il s’agit de Read.
Valeur Description
Execute Active les gestionnaires dans la collection de gestionnaires qui nécessitent des droits d’exécution dans des répertoires et des fichiers.
None Désactive tous les gestionnaires dans la collection de gestionnaires qui nécessitent un accès aux répertoires ou aux fichiers.
NoRemoteExecute Empêche les gestionnaires dans la collection de gestionnaires de faire fonctionner les exécutables lorsqu’un gestionnaire reçoit une requête distante.
NoRemoteRead Empêche les gestionnaires dans la collection de gestionnaires de lire les fichiers lorsqu’un gestionnaire reçoit une requête distante.
NoRemoteScript Empêche les gestionnaires dans la collection de gestionnaires d’exécuter les scripts lorsqu’un gestionnaire reçoit une requête distante.
NoRemoteWrite Empêche les gestionnaires dans la collection de gestionnaires de créer ou de modifier les fichiers lorsqu’un gestionnaire reçoit une requête distante.
Read Active les gestionnaires dans la collection de gestionnaires qui nécessitent l’accès en lecture aux répertoires et aux fichiers.
Script Active les gestionnaires dans la collection de gestionnaires qui nécessitent les droits de script pour les répertoires ou les fichiers.
Source Active les gestionnaires dans la collection de gestionnaires qui nécessitent l’accès en lecture au code source (avec l’indicateur Lecture) ou l’accès en écriture au code source (avec l’indicateur Écriture).
Write Active les gestionnaires dans la collection de gestionnaires qui nécessitent l’accès en écriture aux répertoires et aux fichiers.

Éléments enfants

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

Ajoute un gestionnaire à la collection de gestionnaires.
clear Élément facultatif.

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

Supprime une référence à un gestionnaire de la collection de gestionnaires.

Exemple Configuration

L’exemple suivant contient deux éléments <add> qui définissent les mappages de gestionnaire. Le premier élément <add> définit un gestionnaire SampleHandler pour une application web s’exécutant en mode intégré IIS 7. Si vous ajoutez l'assembly de gestionnaire au répertoire app_code de l’application web, vous n’avez pas besoin d’inclure le nom de l'assembly dans la valeur de l’attribut type. Le deuxième élément <add> définit un mappage pour les demandes PHP qui utilisent le module FastCGI.

<handlers>
   <add name="SampleHandler" verb="*" 
      path="SampleHandler.new" 
      type="SampleHandler, SampleHandlerAssembly" 
      resourceType="Unspecified" />
   <add name="PHP-FastCGI" verb="*" 
      path="*.php" 
      modules="FastCgiModule"
      scriptProcessor="c:\php\php-cgi.exe" 
      resourceType="Either" />
</handlers>

Exemple de code

Les exemples suivants ajoutent un mappage FastCGI pour un module PHP, puis ajoutent un gestionnaire sur le site web Contoso qui traite les requêtes PHP.

AppCmd.exe

appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='c:\php\php-cgi.exe']" /commit:apphost

appcmd.exe set config "Contoso" -section:system.webServer/handlers /+"[name='PHP-FastCGI',path='*.php',verb='GET,HEAD,POST',modules='FastCgiModule',scriptProcessor='c:\php\php-cgi.exe',resourceType='Either']"

Remarque

Ce deuxième exemple montre comment ajouter un nouveau mappage de gestionnaire de ASP.NET nommé SampleHandler.new pour une URL spécifique à une application web.

appcmd.exe set config /section:system.webServer/handlers /+[name=SampleHandler',path='SampleHandler.new',verb='*',type='SampleHandler']

C#

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

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration appHostConfig = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection fastCgiSection = appHostConfig.GetSection("system.webServer/fastCgi");
         ConfigurationElementCollection fastCgiCollection = fastCgiSection.GetCollection();
         ConfigurationElement applicationElement = fastCgiCollection.CreateElement("application");
         applicationElement["fullPath"] = @"c:\php\php-cgi.exe";
         fastCgiCollection.Add(applicationElement);

         Configuration webConfig = serverManager.GetWebConfiguration("Contoso");
         ConfigurationSection handlersSection = webConfig.GetSection("system.webServer/handlers");
         ConfigurationElementCollection handlersCollection = handlersSection.GetCollection();
         ConfigurationElement addElement = handlersCollection.CreateElement("add");
         addElement["name"] = @"PHP-FastCGI";
         addElement["path"] = @"*.php";
         addElement["verb"] = @"GET,HEAD,POST";
         addElement["modules"] = @"FastCgiModule";
         addElement["scriptProcessor"] = @"c:\php\php-cgi.exe";
         addElement["resourceType"] = @"Either";
         handlersCollection.AddAt(0, 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 appHostConfig As Configuration = serverManager.GetApplicationHostConfiguration
      Dim fastCgiSection As ConfigurationSection = appHostConfig.GetSection("system.webServer/fastCgi")
      Dim fastCgiCollection As ConfigurationElementCollection = fastCgiSection.GetCollection
      Dim applicationElement As ConfigurationElement = fastCgiCollection.CreateElement("application")
      applicationElement("fullPath") = "c:\php\php-cgi.exe"
      fastCgiCollection.Add(applicationElement)

      Dim webConfig As Configuration = serverManager.GetWebConfiguration("Contoso")
      Dim handlersSection As ConfigurationSection = webConfig.GetSection("system.webServer/handlers")
      Dim handlersCollection As ConfigurationElementCollection = handlersSection.GetCollection
      Dim addElement As ConfigurationElement = handlersCollection.CreateElement("add")
      addElement("name") = "PHP-FastCGI"
      addElement("path") = "*.php"
      addElement("verb") = "GET,HEAD,POST"
      addElement("modules") = "FastCgiModule"
      addElement("scriptProcessor") = "c:\php\php-cgi.exe"
      addElement("resourceType") = "Either"
      handlersCollection.AddAt(0, addElement)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');

adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var fastCgiSection = adminManager.GetAdminSection("system.webServer/fastCgi", "MACHINE/WEBROOT/APPHOST");
var fastCgiCollection = fastCgiSection.Collection;
var applicationElement = fastCgiCollection.CreateNewElement("application");
applicationElement.Properties.Item("fullPath").Value = "c:\\php\\php-cgi.exe";
fastCgiCollection.AddElement(applicationElement);
adminManager.CommitChanges();

adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso";
var handlersSection = adminManager.GetAdminSection("system.webServer/handlers", "MACHINE/WEBROOT/APPHOST/Contoso");
var handlersCollection = handlersSection.Collection;
var addElement = handlersCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "PHP-FastCGI";
addElement.Properties.Item("path").Value = "*.php";
addElement.Properties.Item("verb").Value = "GET,HEAD,POST";
addElement.Properties.Item("modules").Value = "FastCgiModule";
addElement.Properties.Item("scriptProcessor").Value = "c:\\php\\php-cgi.exe";
addElement.Properties.Item("resourceType").Value = "Either";
handlersCollection.AddElement(addElement, 0);
adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")

adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set fastCgiSection = adminManager.GetAdminSection("system.webServer/fastCgi", "MACHINE/WEBROOT/APPHOST")
Set fastCgiCollection = fastCgiSection.Collection
Set applicationElement = fastCgiCollection.CreateNewElement("application")
applicationElement.Properties.Item("fullPath").Value = "c:\php\php-cgi.exe"
fastCgiCollection.AddElement applicationElement
adminManager.CommitChanges()

adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso"
Set handlersSection = adminManager.GetAdminSection("system.webServer/handlers", "MACHINE/WEBROOT/APPHOST/Contoso")
Set handlersCollection = handlersSection.Collection
Set addElement = handlersCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "PHP-FastCGI"
addElement.Properties.Item("path").Value = "*.php"
addElement.Properties.Item("verb").Value = "GET,HEAD,POST"
addElement.Properties.Item("modules").Value = "FastCgiModule"
addElement.Properties.Item("scriptProcessor").Value = "c:\php\php-cgi.exe"
addElement.Properties.Item("resourceType").Value = "Either"
handlersCollection.AddElement addElement, 0
adminManager.CommitChanges()