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é
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).
Dans le volet Connexions, cliquez sur la connexion du serveur à laquelle vous souhaitez ajouter le module natif.
Dans le volet Accueil, double-cliquez sur Mappages de gestionnaires.
Sur le volet Actions, cliquez sur Ajouter un gestionnaire de module...
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.
Cliquez sur OK pour fermer la boîte de dialogue Ajouter un gestionnaire managé.
Comment créer un mappage de gestionnaire FastCGI
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).
Dans le volet Connexions, cliquez sur le nom du serveur pour lequel vous souhaitez configurer les mappages de gestionnaires FastCGI.
Dans le volet Accueil, double-cliquez sur Mappages de gestionnaires.
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.
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.
Sur la boîte de dialogue Ajouter un mappage de module, cliquez sur Oui.
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 .
|
É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()