Modules IIS avec ASP.NET Core
Remarque
Ceci n’est pas la dernière version de cet article. Pour la version actuelle, consultez la version .NET 8 de cet article.
Avertissement
Cette version d’ASP.NET Core n’est plus prise en charge. Pour plus d’informations, consultez la Stratégie de prise en charge de .NET et .NET Core. Pour la version actuelle, consultez la version .NET 8 de cet article.
Important
Ces informations portent sur la préversion du produit, qui est susceptible d’être en grande partie modifié avant sa commercialisation. Microsoft n’offre aucune garantie, expresse ou implicite, concernant les informations fournies ici.
Pour la version actuelle, consultez la version .NET 8 de cet article.
Certains des modules IIS natifs et tous les modules managés IIS ne peuvent pas traiter les requêtes liées aux applications ASP.NET Core. Dans de nombreux cas, ASP.NET Core offre une alternative aux scénarios traités par les modules natifs et managés IIS.
Modules natifs
Le tableau indique les modules IIS natifs qui fonctionnent avec les applications ASP.NET Core et le module ASP.NET Core.
Module | Opérationnel avec les applications ASP.NET Core | Option ASP.NET Core |
---|---|---|
Authentification anonymeAnonymousAuthenticationModule |
Oui | |
Authentification de baseBasicAuthenticationModule |
Oui | |
Authentification par mappage de certification clienteCertificateMappingAuthenticationModule |
Oui | |
CGICgiModule |
Non | |
Validation de configurationConfigurationValidationModule |
Oui | |
Erreurs HTTPCustomErrorModule |
Non | Middleware (intergiciel) de pages de codes d’état |
Journalisation personnaliséeCustomLoggingModule |
Oui | |
Document par défautDefaultDocumentModule |
Non | Middleware de fichiers par défaut |
Authentification DigestDigestAuthenticationModule |
Oui | |
Exploration des répertoiresDirectoryListingModule |
Non | Middleware d’exploration des répertoires |
Compression dynamiqueDynamicCompressionModule |
Oui | Middleware de compression des réponses |
Suivi des demandes ayant échouéFailedRequestsTracingModule |
Oui | Journalisation ASP.NET Core |
Mise en cache des fichiersFileCacheModule |
Non | Intergiciel de mise en cache des réponses |
Mise en cache HTTPHttpCacheModule |
Non | Intergiciel de mise en cache des réponses |
Journalisation HTTPHttpLoggingModule |
Oui | Journalisation ASP.NET Core |
Redirection HTTPHttpRedirectionModule |
Oui | Intergiciel de réécriture d’URL |
Suivi HTTPTracingModule |
Oui | |
Authentification par mappage de certificat client IISIISCertificateMappingAuthenticationModule |
Oui | |
Restrictions IP et de domaineIpRestrictionModule |
Oui | |
Filtres ISAPIIsapiFilterModule |
Oui | Middleware |
ISAPIIsapiModule |
Oui | Middleware |
Prise en charge des protocolesProtocolSupportModule |
Oui | |
Filtrage des demandesRequestFilteringModule |
Oui | Middleware de réécriture d’URLIRule |
Observateur de demandesRequestMonitorModule |
Oui | |
Réécriture d’URL†RewriteModule |
Oui | Intergiciel de réécriture d’URL |
Textes insérés par le serveurServerSideIncludeModule |
Non | |
Compression statiqueStaticCompressionModule |
Non | Middleware de compression des réponses |
Contenu statiqueStaticFileModule |
Non | Middleware de fichiers statiques |
Mise en cache de jetonTokenCacheModule |
Oui | |
Mise en cache d’URIUriCacheModule |
Oui | |
Autorisation URLUrlAuthorizationModule |
Oui | ASP.NET Core Identity |
WebDavWebDAV |
Non | |
Authentification WindowsWindowsAuthenticationModule |
Oui |
†Les types de correspondance isFile
et isDirectory
du module de réécriture d’URL ne fonctionnent pas avec les applications ASP.NET Core en raison des modifications apportées à la structure de répertoires.
Modules managés
Les modules managés ne sont pas opérationnels avec les applications ASP.NET Core hébergées quand la version CLR .NET du pool d’applications est définie sur Aucun code managé. ASP.NET Core offre des alternatives de middleware dans plusieurs cas.
Module | Option ASP.NET Core |
---|---|
AnonymousIdentification | |
DefaultAuthentication | |
FileAuthorization | |
FormsAuthentication | CookieIntergiciel d’authentification |
OutputCache | Intergiciel de mise en cache des réponses |
Profil | |
RoleManager | |
ScriptModule-4.0 | |
session | Middleware de session |
UrlAuthorization | |
UrlMappingsModule | Intergiciel de réécriture d’URL |
UrlRoutingModule-4.0 | ASP.NET Core Identity |
WindowsAuthentication |
Modification de l’application avec le Gestionnaire IIS
Quand vous utilisez le Gestionnaire IIS pour configurer les paramètres, le fichier web.config de l’application est modifié. Si vous déployez une application et que vous incluez web.config, toutes les modifications apportées avec le Gestionnaire IIS sont remplacées par le fichier web.config déployé. Si des modifications sont apportées au fichier web.config du serveur, copiez le fichier web.config mis à jour sur le serveur dans le projet local immédiatement.
Désactivation des modules IIS
Si un module IIS configuré au niveau du serveur doit être désactivé pour une application, un ajout au fichier web.config de l’application peut désactiver le module. Conservez le module en place et désactivez-le à l’aide d’un paramètre de configuration (si disponible) ou supprimez le module de l’application.
Désactivation du module
De nombreux modules disposent d’un paramètre de configuration qui vous permet de les désactiver sans les supprimer de l’application. Il s’agit de la façon la plus simple et plus rapide pour désactiver un module. Par exemple, le module de redirection HTTP peut être désactivé avec l’élément <httpRedirect>
dans web.config :
<configuration>
<system.webServer>
<httpRedirect enabled="false" />
</system.webServer>
</configuration>
Pour plus d’informations sur la désactivation de modules avec des paramètres de configuration, suivez les liens dans la section Éléments enfants de la page IIS <system.webServer>.
Suppression de module
Si vous décidez de supprimer un module avec un paramètre dans web.config, déverrouillez le module et déverrouillez la section <modules>
de web.config en premier :
Déverrouillez le module au niveau du serveur. Sélectionnez le serveur IIS dans la barre latérale Connexions du Gestionnaire IIS. Ouvrez les Modules dans la zone IIS. Sélectionnez le module dans la liste. Dans la barre latérale Actions à droite, sélectionnez Déverrouiller. Si l’entrée d’action du module indique Verrouiller, cela signifie que le module est déjà déverrouillé et qu’aucune action n’est nécessaire. Déverrouillez tous les modules que vous envisagez de supprimer de web.config.
Déployez l’application sans section
<modules>
dans web.config. Si une application est déployée avec un fichier web.config contenant la section<modules>
et que celle-ci n’a pas été préalablement déverrouillée dans le Gestionnaire IIS, Configuration Manager lève une exception au moment du déverrouillage de la section. Vous devez donc déployer l’application sans section<modules>
.Déverrouillez la section
<modules>
de web.config. Dans la barre latérale Connexions, sélectionnez le site web dans Sites. Dans la zone Gestion, ouvrez l’Éditeur de configuration. Utilisez les contrôles de navigation pour sélectionner la sectionsystem.webServer/modules
. Dans la barre latérale Actions à droite, sélectionnez l’option permettant de Déverrouiller la section. Si l’entrée d’action de la section du module indique Verrouiller la section, cela signifie que le module est déjà déverrouillé et qu’aucune action n’est nécessaire.Ajoutez une section
<modules>
au fichier web.config local de l’application avec un élément<remove>
pour supprimer le module de l’application. Ajoutez plusieurs éléments<remove>
pour supprimer plusieurs modules. Si des modifications sont apportées au fichier web.config sur le serveur, effectuez immédiatement les mêmes modifications dans le fichier web.config du projet localement. La suppression d’un module à l’aide de cette approche n’affecte pas l’utilisation du module avec d’autres applications sur le serveur.<configuration> <system.webServer> <modules> <remove name="MODULE_NAME" /> </modules> </system.webServer> </configuration>
Pour ajouter ou supprimer des modules pour IIS Express à l’aide de web.config, modifiez applicationHost.config afin de déverrouiller la section <modules>
:
Ouvrez {RACINE DE L’APPLICATION}.vs\config\applicationhost.config.
Recherchez l’élément
<section>
des modules IIS et changezoverrideModeDefault
en remplaçantDeny
parAllow
:<section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Allow" />
Recherchez la section
<location path="" overrideMode="Allow"><system.webServer><modules>
. Pour tous les modules à supprimer, définissezlockItem
en remplaçanttrue
parfalse
. Dans l’exemple suivant, le module CGI est déverrouillé :<add name="CgiModule" lockItem="false" />
Une fois que la section
<modules>
et les modules individuels sont déverrouillés, vous pouvez ajouter ou supprimer des modules IIS à l’aide du fichier web.config de l’application pour permettre l’exécution de l’application sur IIS Express.
Vous pouvez également supprimer un module IIS avec Appcmd.exe. Fournissez MODULE_NAME
et APPLICATION_NAME
dans la commande :
Appcmd.exe delete module MODULE_NAME /app.name:APPLICATION_NAME
Par exemple, supprimez DynamicCompressionModule
du site web par défaut :
%windir%\system32\inetsrv\appcmd.exe delete module DynamicCompressionModule /app.name:"Default Web Site"
Configuration minimale des modules
Les seuls modules requis pour exécuter une application ASP.NET Core sont le module d’authentification anonyme et le module ASP.NET Core.
Le module de mise en cache d’URI (UriCacheModule
) permet à IIS de mettre en cache la configuration du site web au niveau de l’URL. Sans ce module, IIS doit lire et analyser la configuration à chaque requête, même quand la même URL est demandée à plusieurs reprises. L’analyse de la configuration à chaque requête entraîne une baisse significative des performances. Bien que le module de mise en cache d’URI ne soit pas absolument nécessaire à l’exécution d’une application ASP.NET Core hébergée, nous vous recommandons de l’activer pour tous les déploiements ASP.NET Core.
Le module de mise en cache HTTP (HttpCacheModule
) implémente le cache de sortie IIS, ainsi que la logique de mise en cache des éléments dans le cache HTTP.sys. Sans ce module, le contenu n’est plus mis en cache en mode noyau, et les profils de cache sont ignorés. En règle générale, la suppression du module de mise en cache HTTP a des effets négatifs sur les performances et l’utilisation des ressources. Bien que le module de mise en cache HTTP ne soit pas absolument nécessaire à l’exécution d’une application ASP.NET Core hébergée, nous vous recommandons de l’activer pour tous les déploiements ASP.NET Core.
Ressources supplémentaires
- Présentation des architectures IIS : modules dans IIS
- Vue d’ensemble des modules IIS
- Customizing IIS 7.0 Roles and Modules (Personnalisation des rôles et des modules dans IIS 7.0)
- IIS <system.webServer>