Héberger ASP.NET Core sur Windows avec IISHost ASP.NET Core on Windows with IIS

Par Luke LathamBy Luke Latham

Installer le bundle d’hébergement .NET CoreInstall the .NET Core Hosting Bundle

Systèmes d'exploitation pris en chargeSupported operating systems

Les systèmes d’exploitation suivants sont pris en charge :The following operating systems are supported:

  • Windows 7 ou version ultérieureWindows 7 or later
  • Windows Server 2008 R2 ou une version ultérieureWindows Server 2008 R2 or later

Le serveur HTTP.sys (anciennement WebListener) ne fonctionne pas dans une configuration de proxy inverse avec IIS.HTTP.sys server (formerly called WebListener) doesn't work in a reverse proxy configuration with IIS. Utilisez le serveur Kestrel.Use the Kestrel server.

Pour plus d’informations sur l’hébergement dans Azure, consultez Déployer des applications ASP.NET Core sur Azure App Service.For information on hosting in Azure, see Déployer des applications ASP.NET Core sur Azure App Service.

Configuration d’applicationApplication configuration

Activer les composants IISIntegrationEnable the IISIntegration components

Un fichier Program.cs standard appelle CreateDefaultBuilder pour commencer à configurer un hôte :A typical Program.cs calls CreateDefaultBuilder to begin setting up a host:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        ...

Un fichier Program.cs standard appelle CreateDefaultBuilder pour commencer à configurer un hôte :A typical Program.cs calls CreateDefaultBuilder to begin setting up a host:

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        ...

Modèle d’hébergement in-processIn-process hosting model

CreateDefaultBuilder appelle la méthode UseIIS pour démarrer le CoreCLR et héberger l’application à l’intérieur du processus Worker (w3wp.exe ou iisexpress.exe).CreateDefaultBuilder calls the UseIIS method to boot the CoreCLR and host the app inside of the IIS worker process (w3wp.exe or iisexpress.exe). Les tests de performance indiquent que l’hébergement d’une application.NET Core in-process fournit un débit de requêtes beaucoup plus élevé que l'hébergement de l’application out-of-process et des requêtes proxy vers Kestrel.Performance tests indicate that hosting a .NET Core app in-process delivers significantly higher request throughput compared to hosting the app out-of-process and proxying requests to Kestrel.

Modèle d’hébergement out-of-processOut-of-process hosting model

Pour l'hébergement out-of-process avec IIS, CreateDefaultBuilder configure Kestrel comme serveur web et permet l'intégration IIS en configurant le chemin de base et le port du module ASP.NET Core .For out-of-process hosting with IIS, CreateDefaultBuilder configures Kestrel as the web server and enables IIS integration by configuring the base path and port for the ASP.NET Core Module.

Le module ASP.NET Core génère un port dynamique à assigner au processus backend.The ASP.NET Core Module generates a dynamic port to assign to the backend process. CreateDefaultBuilder appelle la méthode UseIISIntegration.CreateDefaultBuilder calls the UseIISIntegration method. UseIISIntegration configure Kestrel pour écouter sur le port dynamique à l’adresse IP localhost (127.0.0.1).UseIISIntegration configures Kestrel to listen on the dynamic port at the localhost IP address (127.0.0.1). Si le port dynamique est 1234, Kestrel écoute sur 127.0.0.1:1234.If the dynamic port is 1234, Kestrel listens at 127.0.0.1:1234. Cette configuration remplace les autres configurations URL fournies par :This configuration replaces other URL configurations provided by:

L’utilisation du module évite les appels à UseUrls ou à l’API Listen de Kestrel.Calls to UseUrls or Kestrel's Listen API aren't required when using the module. Si UseUrls ou Listen est appelé, Kestrel écoute sur les ports spécifiés uniquement lors de l’exécution de l’application sans IIS.If UseUrls or Listen is called, Kestrel listens on the ports specified only when running the app without IIS.

Pour plus d’informations sur les modèles d’hébergement in-process et out-of-process, consultez Module ASP.NET Core et Informations de référence sur la configuration du module ASP.NET Core.For more information on the in-process and out-of-process hosting models, see ASP.NET Core Module and ASP.NET Core Module configuration reference.

CreateDefaultBuilder configure Kestrel comme serveur web et active l’intégration d’IIS en configurant le chemin et le port de base pour le module ASP.NET Core.CreateDefaultBuilder configures Kestrel as the web server and enables IIS integration by configuring the base path and port for the ASP.NET Core Module.

Le module ASP.NET Core génère un port dynamique à assigner au processus backend.The ASP.NET Core Module generates a dynamic port to assign to the backend process. CreateDefaultBuilder appelle la méthode UseIISIntegration.CreateDefaultBuilder calls the UseIISIntegration method. UseIISIntegration configure Kestrel pour écouter sur le port dynamique à l’adresse IP localhost (127.0.0.1).UseIISIntegration configures Kestrel to listen on the dynamic port at the localhost IP address (127.0.0.1). Si le port dynamique est 1234, Kestrel écoute sur 127.0.0.1:1234.If the dynamic port is 1234, Kestrel listens at 127.0.0.1:1234. Cette configuration remplace les autres configurations URL fournies par :This configuration replaces other URL configurations provided by:

L’utilisation du module évite les appels à UseUrls ou à l’API Listen de Kestrel.Calls to UseUrls or Kestrel's Listen API aren't required when using the module. Si UseUrls ou Listen est appelé, Kestrel écoute sur le port spécifié uniquement lors de l’exécution de l’application sans IIS.If UseUrls or Listen is called, Kestrel listens on the port specified only when running the app without IIS.

CreateDefaultBuilder configure Kestrel comme serveur web et active l’intégration d’IIS en configurant le chemin et le port de base pour le module ASP.NET Core.CreateDefaultBuilder configures Kestrel as the web server and enables IIS integration by configuring the base path and port for the ASP.NET Core Module.

Le module ASP.NET Core génère un port dynamique à assigner au processus backend.The ASP.NET Core Module generates a dynamic port to assign to the backend process. CreateDefaultBuilder appelle la méthode UseIISIntegration.CreateDefaultBuilder calls the UseIISIntegration method. UseIISIntegration configure Kestrel pour écouter sur le port dynamique à l’adresse IP localhost (localhost).UseIISIntegration configures Kestrel to listen on the dynamic port at the localhost IP address (localhost). Si le port dynamique est 1234, Kestrel écoute sur localhost:1234.If the dynamic port is 1234, Kestrel listens at localhost:1234. Cette configuration remplace les autres configurations URL fournies par :This configuration replaces other URL configurations provided by:

L’utilisation du module évite les appels à UseUrls ou à l’API Listen de Kestrel.Calls to UseUrls or Kestrel's Listen API aren't required when using the module. Si UseUrls ou Listen est appelé, Kestrel écoute sur le port spécifié uniquement lors de l’exécution de l’application sans IIS.If UseUrls or Listen is called, Kestrel listens on the port specified only when running the app without IIS.

Incluez une dépendance envers le package Microsoft.AspNetCore.Server.IISIntegration dans les dépendances de l’application.Include a dependency on the Microsoft.AspNetCore.Server.IISIntegration package in the app's dependencies. Utilisez l’intergiciel (middleware) d’intégration IIS en ajoutant la méthode d’extension UseIISIntegration à WebHostBuilder :Use IIS Integration middleware by adding the UseIISIntegration extension method to WebHostBuilder:

var host = new WebHostBuilder()
    .UseKestrel()
    .UseIISIntegration()
    ...

UseKestrel et UseIISIntegration sont tous les deux requis.Both UseKestrel and UseIISIntegration are required. Le code qui appelle UseIISIntegration n’affecte pas la portabilité du code.Code calling UseIISIntegration doesn't affect code portability. Si l’application n’est pas exécutée derrière IIS (par exemple si l’application est exécutée directement sur Kestrel), UseIISIntegration n’effectue pas d’opérations.If the app isn't run behind IIS (for example, the app is run directly on Kestrel), UseIISIntegration doesn't operate.

Le module ASP.NET Core génère un port dynamique à assigner au processus backend.The ASP.NET Core Module generates a dynamic port to assign to the backend process. UseIISIntegration configure Kestrel pour écouter sur le port dynamique à l’adresse IP localhost (localhost).UseIISIntegration configures Kestrel to listen on the dynamic port at the localhost IP address (localhost). Si le port dynamique est 1234, Kestrel écoute sur localhost:1234.If the dynamic port is 1234, Kestrel listens at localhost:1234. Cette configuration remplace les autres configurations URL fournies par :This configuration replaces other URL configurations provided by:

L’utilisation du module rend inutile tout appel à UseUrls.A call to UseUrls isn't required when using the module. Si UseUrls est appelé, Kestrel écoute sur le port spécifié uniquement lors de l’exécution de l’application sans IIS.If UseUrls is called, Kestrel listens on the port specified only when running the app without IIS.

Si UseUrls est appelé dans une application ASP.NET Core 1.0, appelez-le avant d’appeler UseIISIntegration pour que le port configuré par le module ne soit pas remplacé.If UseUrls is called in an ASP.NET Core 1.0 app, call it before calling UseIISIntegration so that the module-configured port isn't overwritten. Cet ordre d’appel est inutile avec ASP.NET Core 1.1, car le paramètre du module remplace UseUrls.This calling order isn't required with ASP.NET Core 1.1 because the module setting overrides UseUrls.

Pour plus d’informations sur l’hébergement, consultez Héberger dans ASP.NET Core.For more information on hosting, see Host in ASP.NET Core.

Options IISIIS options

Modèle d’hébergement in-processIn-process hosting model

Pour configurer des options IIS Server, ajoutez une configuration de services pour IISServerOptions dans ConfigureServices.To configure IIS Server options, include a service configuration for IISServerOptions in ConfigureServices. L’exemple suivant désactive AutomaticAuthentication :The following example disables AutomaticAuthentication:

services.Configure<IISServerOptions>(options => 
{
    options.AutomaticAuthentication = false;
});
OptionOption Par défautDefault ParamètreSetting
AutomaticAuthentication true Si true, IIS Server définit le HttpContext.User authentifié par Authentification Windows.If true, IIS Server sets the HttpContext.User authenticated by Windows Authentication. Si false, le serveur fournit uniquement une identité pour HttpContext.User et répond aux questions explicitement posées par AuthenticationScheme.If false, the server only provides an identity for HttpContext.User and responds to challenges when explicitly requested by the AuthenticationScheme. L’authentification Windows doit être activée dans IIS pour que AutomaticAuthentication fonctionne.Windows Authentication must be enabled in IIS for AutomaticAuthentication to function. Pour plus d’informations, consultez Authentification Windows.For more information, see Windows Authentication.
AuthenticationDisplayName null Définit le nom d’affichage montré aux utilisateurs sur les pages de connexion.Sets the display name shown to users on login pages.

Modèle d’hébergement out-of-processOut-of-process hosting model

Pour configurer des options IIS, ajoutez une configuration de services pour IISOptions dans ConfigureServices.To configure IIS options, include a service configuration for IISOptions in ConfigureServices. L’exemple suivant empêche l’application d’être renseignée HttpContext.Connection.ClientCertificate :The following example prevents the app from populating HttpContext.Connection.ClientCertificate:

services.Configure<IISOptions>(options => 
{
    options.ForwardClientCertificate = false;
});
OptionOption Par défautDefault ParamètreSetting
AutomaticAuthentication true Si true, l’Intergiciel (Middleware) d’intégration IIS définit le HttpContext.User authentifié par Authentification Windows.If true, IIS Integration Middleware sets the HttpContext.User authenticated by Windows Authentication. Si false, l’intergiciel (middleware) fournit uniquement une identité pour HttpContext.User et répond aux questions explicitement posées par AuthenticationScheme.If false, the middleware only provides an identity for HttpContext.User and responds to challenges when explicitly requested by the AuthenticationScheme. L’authentification Windows doit être activée dans IIS pour que AutomaticAuthentication fonctionne.Windows Authentication must be enabled in IIS for AutomaticAuthentication to function. Pour plus d'informations, consultez la rubrique Authentification Windows.For more information, see the Windows Authentication topic.
AuthenticationDisplayName null Définit le nom d’affichage montré aux utilisateurs sur les pages de connexion.Sets the display name shown to users on login pages.
ForwardClientCertificate true Si la valeur est true et que l’en-tête de requête MS-ASPNETCORE-CLIENTCERT est présent, HttpContext.Connection.ClientCertificate est renseigné.If true and the MS-ASPNETCORE-CLIENTCERT request header is present, the HttpContext.Connection.ClientCertificate is populated.

Scénarios avec un serveur proxy et un équilibreur de chargeProxy server and load balancer scenarios

L’intergiciel (middleware) d’intégration IIS, qui configure l’intergiciel des en-têtes transférés, et le module ASP.NET Core, sont configurés pour transférer le schéma (HTTP/HTTPS) et l’adresse IP distante d’où provient la requête.The IIS Integration Middleware, which configures Forwarded Headers Middleware, and the ASP.NET Core Module are configured to forward the scheme (HTTP/HTTPS) and the remote IP address where the request originated. Une configuration supplémentaire peut être nécessaire pour les applications hébergées derrière des serveurs proxy et des équilibreurs de charge supplémentaires.Additional configuration might be required for apps hosted behind additional proxy servers and load balancers. Pour plus d’informations, consultez Configurer ASP.NET Core pour l’utilisation de serveurs proxy et d’équilibreurs de charge.For more information, see Configure ASP.NET Core to work with proxy servers and load balancers.

fichier web.configweb.config file

Le fichier web.config configure le Module ASP.NET Core.The web.config file configures the ASP.NET Core Module. La création, la transformation et la publication du fichier web.config sont gérées par une cible MSBuild (_TransformWebConfig) quand le projet est publié.Creating, transforming, and publishing the web.config file is handled by an MSBuild target (_TransformWebConfig) when the project is published. Cette cible est présente dans les cibles du SDK web (Microsoft.NET.Sdk.Web).This target is present in the Web SDK targets (Microsoft.NET.Sdk.Web). Le SDK est défini en haut du fichier projet :The SDK is set at the top of the project file:

<Project Sdk="Microsoft.NET.Sdk.Web">

Si le projet ne contient pas de fichier web.config, le fichier est créé avec le processPath et les arguments corrects pour configurer le Module ASP.NET Core, puis il est déplacé vers la sortie publiée.If a web.config file isn't present in the project, the file is created with the correct processPath and arguments to configure the ASP.NET Core Module and moved to published output.

Si un fichier web.config se trouve dans le projet, il est transformé avec le processPath et les arguments corrects pour configurer le Module ASP.NET Core, puis il est déplacé vers la sortie publiée.If a web.config file is present in the project, the file is transformed with the correct processPath and arguments to configure the ASP.NET Core Module and moved to published output. La transformation ne modifie pas les paramètres de configuration IIS dans le fichier.The transformation doesn't modify IIS configuration settings in the file.

Le fichier web.config peut fournir des paramètres de configuration IIS supplémentaires qui contrôlent les modules IIS actifs.The web.config file may provide additional IIS configuration settings that control active IIS modules. Pour plus d’informations sur les modules IIS capables de traiter les requêtes avec des applications ASP.NET Core, consultez la rubrique Modules IIS.For information on IIS modules that are capable of processing requests with ASP.NET Core apps, see the IIS modules topic.

Pour empêcher le Kit de développement logiciel (SDK) Web de transformer le fichier web.config, ajoutez la propriété <IsTransformWebConfigDisabled> au fichier projet :To prevent the Web SDK from transforming the web.config file, use the <IsTransformWebConfigDisabled> property in the project file:

<PropertyGroup>
  <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>

Lorsque vous désactivez le Kit de développement logiciel (SDK) Web en transformant le fichier, le processPath et les arguments doivent être définis manuellement par le développeur.When disabling the Web SDK from transforming the file, the processPath and arguments should be manually set by the developer. Pour plus d’informations, consultez les Informations de référence sur la configuration du module ASP.NET Core.For more information, see the ASP.NET Core Module configuration reference.

emplacement du fichier web.configweb.config file location

Pour configurer le module ASP.NET Core correctement, le fichier web.config doit être présent dans le chemin de racine de contenu (généralement le chemin de base de l’application) de l’application déployée.In order to set up the ASP.NET Core Module correctly, the web.config file must be present at the content root path (typically the app base path) of the deployed app. Il s’agit du même emplacement que le chemin physique du site Web fourni à IIS.This is the same location as the website physical path provided to IIS. Le fichier web.config est nécessaire à la racine de l’application pour permettre la publication de plusieurs applications à l’aide de Web Deploy.The web.config file is required at the root of the app to enable the publishing of multiple apps using Web Deploy.

Il existe des fichiers sensibles sur le chemin physique de l’application, notamment <assembly>.runtimeconfig.json, <assembly>.xml (commentaires de documentation XML) et <assembly>.deps.json.Sensitive files exist on the app's physical path, such as <assembly>.runtimeconfig.json, <assembly>.xml (XML Documentation comments), and <assembly>.deps.json. Lorsque le fichier web.config est présent et que le site démarre normalement, IIS ne traite pas ces fichiers sensibles s’ils sont requis.When the web.config file is present and and the site starts normally, IIS doesn't serve these sensitive files if they're requested. Si le fichier web.config est absent, nommé de manière incorrecte ou s’il est incapable de configurer le site pour un démarrage normal, IIS peut traiter des fichiers sensibles publiquement.If the web.config file is missing, incorrectly named, or unable to configure the site for normal startup, IIS may serve sensitive files publicly.

Le fichier web.config doit être présent dans le déploiement en permanence, correctement nommé et capable de configurer le site pour un démarrage normal. Ne retirez jamais le fichier web.config d’un déploiement de production.The web.config file must be present in the deployment at all times, correctly named, and able to configure the site for normal start up. Never remove the web.config file from a production deployment.

Configuration d’IISIIS configuration

Systèmes d’exploitation Windows ServerWindows Server operating systems

Activez le rôle serveur Serveur Web (IIS) et établissez des services de rôle.Enable the Web Server (IIS) server role and establish role services.

  1. Utilisez l’Assistant Ajouter des rôles et des fonctionnalités par le biais du menu Gérer ou du lien dans Gestionnaire de serveur.Use the Add Roles and Features wizard from the Manage menu or the link in Server Manager. À l’étape Rôles de serveurs, cochez la case Serveur Web (IIS).On the Server Roles step, check the box for Web Server (IIS).

    Le rôle Serveur Web IIS est sélectionné à l’étape Sélectionner des rôles de serveurs.

  2. Après l’étape Fonctionnalités, l’étape Services de rôle se charge pour le serveur Web (IIS).After the Features step, the Role services step loads for Web Server (IIS). Sélectionnez les services de rôle IIS souhaités ou acceptez les services de rôle par défaut fournis.Select the IIS role services desired or accept the default role services provided.

    Les services de rôle par défaut sont sélectionnés à l’étape Sélectionner des services de rôle.

    Authentification Windows (facultatif)Windows Authentication (Optional)
    Pour activer l’authentification Windows, développez les nœuds suivants : Serveur Web > Sécurité.To enable Windows Authentication, expand the following nodes: Web Server > Security. Sélectionnez la fonctionnalité Authentification Windows.Select the Windows Authentication feature. Pour plus d’informations, consultez Authentification Windows<windowsAuthentication> et Configurer l’authentification Windows.For more information, see Windows Authentication <windowsAuthentication> and Configure Windows authentication.

    WebSockets (facultatif)WebSockets (Optional)
    WebSockets est pris en charge avec ASP.NET Core 1.1 ou version ultérieure.WebSockets is supported with ASP.NET Core 1.1 or later. Pour activer les WebSockets, développez les nœuds suivants : Serveur Web > Développement d’applications.To enable WebSockets, expand the following nodes: Web Server > Application Development. Sélectionnez la fonctionnalité Protocole WebSocket.Select the WebSocket Protocol feature. Pour plus d’informations, consultez WebSockets.For more information, see WebSockets.

  3. Validez l’étape de Confirmation pour installer les services et le rôle de serveur web.Proceed through the Confirmation step to install the web server role and services. Un redémarrage du serveur/d’IIS n’est pas nécessaire après l’installation du rôle Serveur Web (IIS).A server/IIS restart isn't required after installing the Web Server (IIS) role.

Systèmes d’exploitation Windows DesktopWindows desktop operating systems

Activez la Console de gestion IIS et les Services World Wide Web.Enable the IIS Management Console and World Wide Web Services.

  1. Accédez à Panneau de configuration > Programmes > Programmes et fonctionnalités > Activer ou désactiver des fonctionnalités Windows (à gauche de l’écran).Navigate to Control Panel > Programs > Programs and Features > Turn Windows features on or off (left side of the screen).

  2. Ouvrez le nœud Internet Information Services.Open the Internet Information Services node. Ouvrez le nœud Outils de gestion Web.Open the Web Management Tools node.

  3. Cochez la case Console de gestion IIS.Check the box for IIS Management Console.

  4. Cochez la case Services World Wide Web.Check the box for World Wide Web Services.

  5. Acceptez les fonctionnalités par défaut pour Services World Wide Web ou personnalisez les fonctionnalités d’IIS.Accept the default features for World Wide Web Services or customize the IIS features.

    Authentification Windows (facultatif)Windows Authentication (Optional)
    Pour activer l’authentification Windows, développez les nœuds suivants : Services World Wide Web > Sécurité.To enable Windows Authentication, expand the following nodes: World Wide Web Services > Security. Sélectionnez la fonctionnalité Authentification Windows.Select the Windows Authentication feature. Pour plus d’informations, consultez Authentification Windows<windowsAuthentication> et Configurer l’authentification Windows.For more information, see Windows Authentication <windowsAuthentication> and Configure Windows authentication.

    WebSockets (facultatif)WebSockets (Optional)
    WebSockets est pris en charge avec ASP.NET Core 1.1 ou version ultérieure.WebSockets is supported with ASP.NET Core 1.1 or later. Pour activer les WebSockets, développez les nœuds suivants : Services World Wide Web > Fonctionnalités de développement d’applications.To enable WebSockets, expand the following nodes: World Wide Web Services > Application Development Features. Sélectionnez la fonctionnalité Protocole WebSocket.Select the WebSocket Protocol feature. Pour plus d’informations, consultez WebSockets.For more information, see WebSockets.

  6. Si l’installation d’IIS requiert un redémarrage, redémarrez le système.If the IIS installation requires a restart, restart the system.

Console de gestion IIS et Services World Wide Web sont sélectionnés dans Fonctionnalités de Windows.

Installer le bundle d’hébergement .NET CoreInstall the .NET Core Hosting Bundle

Installez le bundle d’hébergement .NET Core sur le système hôte.Install the .NET Core Hosting Bundle on the hosting system. Le bundle installe le Runtime .NET Core, la bibliothèque .NET Core et le Module ASP.NET Core.The bundle installs the .NET Core Runtime, .NET Core Library, and the ASP.NET Core Module. Le module permet aux applications ASP.NET Core de s’exécuter derrière IIS.The module allows ASP.NET Core apps to run behind IIS. Si le système n’a pas de connexion Internet, obtenez et installez Microsoft Visual C++ 2015 Redistributable avant d’installer le bundle d’hébergement .NET Core.If the system doesn't have an Internet connection, obtain and install the Microsoft Visual C++ 2015 Redistributable before installing the .NET Core Hosting Bundle.

Important

Si le bundle d’hébergement est installé avant IIS, l’installation du bundle doit être réparée.If the Hosting Bundle is installed before IIS, the bundle installation must be repaired. Après avoir installé IIS, réexécutez le programme d’installation du bundle d’hébergement.Run the Hosting Bundle installer again after installing IIS.

Téléchargement direct (version actuelle)Direct download (current version)

Téléchargez le programme d’installation à l’aide du lien suivant :Download the installer using the following link:

Programme d’installation du bundle d’hébergement .NET Core actuel (téléchargement direct)Current .NET Core Hosting Bundle installer (direct download)

Versions antérieures du programme d’installationEarlier versions of the installer

Pour obtenir une version antérieure du programme d’installation :To obtain an earlier version of the installer:

  1. Accédez aux archives des téléchargements .NET.Navigate to the .NET download archives.
  2. Sous .NET Core, sélectionnez la version de .NET Core.Under .NET Core, select the .NET Core version.
  3. Dans la colonne Run apps - Runtime, recherchez la ligne de la version du runtime .NET Core souhaitée.In the Run apps - Runtime column, find the row of the .NET Core runtime version desired.
  4. Téléchargez le programme d’installation à l’aide du lien Runtime & Hosting Bundle.Download the installer using the Runtime & Hosting Bundle link.

Avertissement

Certains programmes d’installation contiennent des versions qui sont arrivées à leur fin de vie (EOL) et qui ne sont plus prises en charge par Microsoft.Some installers contain release versions that have reached their end of life (EOL) and are no longer supported by Microsoft. Pour plus d’informations, consultez la politique de support.For more information, see the support policy.

Installer le bundle d’hébergementInstall the Hosting Bundle

  1. Exécutez le programme d’installation sur le serveur.Run the installer on the server. Les commutateurs suivants sont disponibles lorsque vous exécutez le programme d’installation à partir d’une invite de commandes administrateur :The following switches are available when running the installer from an administrator command prompt:

    • OPT_NO_ANCM=1 – Sauter l’installation du module ASP.NET Core.OPT_NO_ANCM=1 – Skip installing the ASP.NET Core Module.
    • OPT_NO_RUNTIME=1 –Sauter l'installation du runtime .NET Core.OPT_NO_RUNTIME=1 – Skip installing the .NET Core runtime.
    • OPT_NO_SHAREDFX=1 – Sauter l'installation de l’infrastructure partagée ASP.NET (runtime ASP.NET).OPT_NO_SHAREDFX=1 – Skip installing the ASP.NET Shared Framework (ASP.NET runtime).
    • OPT_NO_X86=1 – Ignorer l’installation des runtimes x86.OPT_NO_X86=1 – Skip installing x86 runtimes. Utilisez ce commutateur lorsque vous savez que vous n’hébergerez pas d’applications 32 bits.Use this switch when you know that you won't be hosting 32-bit apps. Si vous n’excluez pas d’avoir à héberger des applications 32 bits et 64 bits dans le futur, n'utilisez pas ce commutateur et installez les deux runtimes.If there's any chance that you will host both 32-bit and 64-bit apps in the future, don't use this switch and install both runtimes.
  2. Redémarrez le système ou exécutez net stop was /y suivi de net start w3svc à partir d’une invite de commandes.Restart the system or execute net stop was /y followed by net start w3svc from a command prompt. Le redémarrage d’IIS récupère une modification apportée au CHEMIN D’ACCÈS du système, qui est une variable d’environnement, par le programme d’installation.Restarting IIS picks up a change to the system PATH, which is an environment variable, made by the installer.

Si le programme d'installation du pack d'hébergement Windows détecte qu’IIS requiert une réinitialisation pour terminer l’installation, le programme d’installation réinitialise IIS.If the Windows Hosting Bundle installer detects that IIS requires a reset in order to complete installation, the installer resets IIS. Si le programme d’installation déclenche une réinitialisation d’IIS, tous les pools d’applications et sites Web IIS sont redémarrés.If the installer triggers an IIS reset, all of the IIS app pools and websites are restarted.

Note

Pour plus d’informations sur la configuration partagée IIS, consultez Module ASP.NET Core avec configuration partagée des services Internet (IIS).For information on IIS Shared Configuration, see ASP.NET Core Module with IIS Shared Configuration.

Installer Web Deploy lors de la publication avec Visual StudioInstall Web Deploy when publishing with Visual Studio

Quand vous déployez des applications sur un serveur avec Web Deploy, installez la dernière version de Web Deploy sur le serveur.When deploying apps to servers with Web Deploy, install the latest version of Web Deploy on the server. Pour installer Web Deploy, utilisez Web Platform Installer (WebPI) ou obtenez un programme d’installation directement à partir du Centre de téléchargement Microsoft.To install Web Deploy, use the Web Platform Installer (WebPI) or obtain an installer directly from the Microsoft Download Center. La méthode recommandée est d’utiliser WebPI.The preferred method is to use WebPI. WebPI offre une installation autonome et une configuration pour les fournisseurs d’hébergement.WebPI offers a standalone setup and a configuration for hosting providers.

Créer le site IISCreate the IIS site

  1. Sur le système d’hébergement, créez un dossier pour contenir les fichiers et dossiers publiés de l’application.On the hosting system, create a folder to contain the app's published folders and files. Une disposition du déploiement de l’application est décrite dans la rubrique Structure des répertoires.An app's deployment layout is described in the Directory Structure topic.

  2. Dans le nouveau dossier, créez un dossier journaux où stocker les journaux stdout du Module ASP.NET Core quand la journalisation stdout est activée.Within the new folder, create a logs folder to hold ASP.NET Core Module stdout logs when stdout logging is enabled. Si l’application est déployée avec un dossier logs dans la charge utile, ignorez cette étape.If the app is deployed with a logs folder in the payload, skip this step. Pour obtenir des instructions sur l’activation de MSBuild et créer le dossier journaux automatiquement lorsque le projet est généré localement, consultez la rubrique Structure des répertoires.For instructions on how to enable MSBuild to create the logs folder automatically when the project is built locally, see the Directory structure topic.

    Important

    Utilisez uniquement le journal stdout pour résoudre les échecs de démarrage de l’application.Only use the stdout log to troubleshoot app startup failures. N’utilisez jamais la journalisation stdout pour la journalisation de l’application de routine.Never use stdout logging for routine app logging. Il n’existe aucune limite quant à la taille du fichier journal ou au nombre de fichiers journaux créés.There's no limit on log file size or the number of log files created. Le pool d’applications doit avoir un accès en écriture à l’emplacement auquel les journaux sont écrits.The app pool must have write access to the location where the logs are written. Tous les dossiers sur le chemin de l’emplacement des journaux doivent exister.All of the folders on the path to the log location must exist. Pour plus d’informations sur le journal stdout, consultez Création et redirection des journaux.For more information on the stdout log, see Log creation and redirection. Pour plus d’informations sur la journalisation dans une application ASP.NET Core, consultez la rubrique Journalisation.For information on logging in an ASP.NET Core app, see the Logging topic.

  3. Dans Gestionnaire IIS, ouvrez le nœud du serveur dans le panneau Connexions.In IIS Manager, open the server's node in the Connections panel. Cliquez avec le bouton de droite sur le dossier Sites.Right-click the Sites folder. Sélectionnez Ajouter un site Web dans le menu contextuel.Select Add Website from the contextual menu.

  4. Spécifiez le Nom du site et définissez le Chemin physique sur le dossier de déploiement de l’application.Provide a Site name and set the Physical path to the app's deployment folder. Spécifiez la configuration Liaison et créez le site Web en sélectionnant OK :Provide the Binding configuration and create the website by selecting OK:

    Spécifiez le nom du site, le chemin physique et le nom d’hôte à l’étape Ajouter un site Web.

    Avertissement

    Les liaisons génériques de niveau supérieur (http://*:80/ et http://+:80) ne doivent pas être utilisées.Top-level wildcard bindings (http://*:80/ and http://+:80) should not be used. Les liaisons génériques de niveau supérieur peuvent exposer votre application à des failles de sécurité.Top-level wildcard bindings can open up your app to security vulnerabilities. Cela s’applique aux caractères génériques forts et faibles.This applies to both strong and weak wildcards. Utilisez des noms d’hôte explicites plutôt que des caractères génériques.Use explicit host names rather than wildcards. Une liaison générique de sous-domaine (par exemple, *.mysub.com) ne présente pas ce risque de sécurité si vous contrôlez le domaine parent en entier (par opposition à *.com, qui est vulnérable).Subdomain wildcard binding (for example, *.mysub.com) doesn't have this security risk if you control the entire parent domain (as opposed to *.com, which is vulnerable). Consultez la rfc7230 section-5.4 pour plus d’informations.See rfc7230 section-5.4 for more information.

  5. Sous le nœud du serveur, sélectionnez Pools d’applications.Under the server's node, select Application Pools.

  6. Cliquez avec le bouton de droite sur le pool d’applications du site et sélectionnez Paramètres de base dans le menu contextuel.Right-click the site's app pool and select Basic Settings from the contextual menu.

  7. Dans la fenêtre Modifier le pool d’applications, définissez la version .NET CLR sur Aucun code managé :In the Edit Application Pool window, set the .NET CLR version to No Managed Code:

    Définissez Aucun code managé pour la version CLR .NET.

    ASP.NET Core s’exécute dans un processus séparé et gère l’exécution.ASP.NET Core runs in a separate process and manages the runtime. ASP.NET Core ne repose pas sur le chargement du CLR de bureau.ASP.NET Core doesn't rely on loading the desktop CLR. La configuration de la version CLR .NET sur Aucun code managé est facultative.Setting the .NET CLR version to No Managed Code is optional.

  8. Vérifiez que l’identité de modèle de processus dispose des autorisations appropriées.Confirm the process model identity has the proper permissions.

    Si l’identité par défaut du pool d’applications (Modèle de processus > Identité) ApplicationPoolIdentity est remplacée par une autre identité, vérifiez que la nouvelle identité dispose des autorisations nécessaires pour accéder au dossier de l’application, à la base de données et aux autres ressources nécessaires.If the default identity of the app pool (Process Model > Identity) is changed from ApplicationPoolIdentity to another identity, verify that the new identity has the required permissions to access the app's folder, database, and other required resources. Par exemple, le pool d’applications nécessite l’accès en lecture et en écriture aux dossiers dans lesquels l’application lit et écrit des fichiers.For example, the app pool requires read and write access to folders where the app reads and writes files.

Configuration de l’authentification Windows (facultatif)Windows Authentication configuration (Optional)
Pour plus d'informations, consultez la rubrique Configurer l’authentification Windows.For more information, see Configure Windows authentication.

Déployer l’applicationDeploy the app

Déployez l’application vers le dossier créé sur le système d’hébergement.Deploy the app to the folder created on the hosting system. Web Deploy est le mécanisme recommandé pour le déploiement.Web Deploy is the recommended mechanism for deployment.

Web Deploy avec Visual StudioWeb Deploy with Visual Studio

Pour découvrir comment créer un profil de publication pour une utilisation avec Web Deploy, consultez la rubrique Profils de publication Visual Studio pour le déploiement d’applications ASP.NET Core.See the Visual Studio publish profiles for ASP.NET Core app deployment topic to learn how to create a publish profile for use with Web Deploy. Si le fournisseur d’hébergement fournit un profil de publication ou prend en charge sa création, téléchargez son profil et importez-le à l’aide de la boîte de dialogue Publier de Visual Studio.If the hosting provider provides a Publish Profile or support for creating one, download their profile and import it using the Visual Studio Publish dialog.

Boîte de dialogue Publier

Web Deploy en dehors de Visual StudioWeb Deploy outside of Visual Studio

Web Deploy peut également être utilisé en dehors de Visual Studio à partir de la ligne de commande.Web Deploy can also be used outside of Visual Studio from the command line. Pour plus d’informations, consultez Web Deployment Tool (Outil de déploiement Web).For more information, see Web Deployment Tool.

Alternatives à Web DeployAlternatives to Web Deploy

Utilisez la méthode de votre choix, telle que la copie manuelle, Xcopy, Robocopy ou PowerShell, pour déplacer l’application vers le système d’hébergement.Use any of several methods to move the app to the hosting system, such as manual copy, Xcopy, Robocopy, or PowerShell.

Pour plus d’informations sur le déploiement d’ASP.NET Core sur IIS, consultez la section Déploiement de ressources pour les administrateurs IIS.For more information on ASP.NET Core deployment to IIS, see the Deployment resources for IIS administrators section.

Parcourir le site webBrowse the website

Le navigateur Microsoft Edge a chargé la page de démarrage IIS.

Fichiers de déploiement verrouillésLocked deployment files

Les fichiers dans le dossier de déploiement sont verrouillés quand l’application est en cours d’exécution.Files in the deployment folder are locked when the app is running. Les fichiers verrouillés ne peuvent pas être remplacés au cours du déploiement.Locked files can't be overwritten during deployment. Pour libérer des fichiers verrouillés dans un déploiement, arrêtez le pool d’applications à l’aide d’une des approches suivantes :To release locked files in a deployment, stop the app pool using one of the following approaches:

  • Utilisez Web Deploy et référencez Microsoft.NET.Sdk.Web dans le fichier projet.Use Web Deploy and reference Microsoft.NET.Sdk.Web in the project file. Un fichier app_offline.htm est placé à la racine du répertoire de l’application web.An app_offline.htm file is placed at the root of the web app directory. Quand le fichier est présent, le module ASP.NET Core ferme l’application normalement et sert le fichier app_offline.htm pendant le déploiement.When the file is present, the ASP.NET Core Module gracefully shuts down the app and serves the app_offline.htm file during the deployment. Pour plus d’informations, consultez les Informations de référence sur la configuration du module ASP.NET Core.For more information, see the ASP.NET Core Module configuration reference.

  • Arrêtez manuellement le pool d’applications dans le Gestionnaire IIS sur le serveur.Manually stop the app pool in the IIS Manager on the server.

  • Utilisez PowerShell pour supprimer app_offline.html (nécessite PowerShell 5 ou ultérieur) :Use PowerShell to drop app_offline.html (requires PowerShell 5 or later):

    $pathToApp = 'PATH_TO_APP'
    
    # Stop the AppPool
    New-Item -Path $pathToApp app_offline.htm
    
    # Provide script commands here to deploy the app
    
    # Restart the AppPool
    Remove-Item -Path $pathToApp app_offline.htm
    
    

Protection des donnéesData protection

La pile de protection des données ASP.NET Core est utilisée par plusieurs intergiciels (middlewares) ASP.NET Core, y compris l’intergiciel utilisé dans l’authentification.The ASP.NET Core Data Protection stack is used by several ASP.NET Core middlewares, including middleware used in authentication. Même si les API de protection des données ne sont pas appelées par le code de l’utilisateur, la protection des données doit être configurée avec un script de déploiement ou dans un code utilisateur pour créer un magasin de clés de chiffrement persistantes.Even if Data Protection APIs aren't called by user code, data protection should be configured with a deployment script or in user code to create a persistent cryptographic key store. Si la protection des données n’est pas configurée, les clés sont conservées en mémoire et ignorées au redémarrage de l’application.If data protection isn't configured, the keys are held in memory and discarded when the app restarts.

Si le Key Ring est stocké en mémoire, au redémarrage de l’application :If the key ring is stored in memory when the app restarts:

  • tous les jetons d’authentification basés sur des cookies sont invalidésAll cookie-based authentication tokens are invalidated.
  • Les utilisateurs doivent se reconnecter pour envoyer leur prochaine demande.Users are required to sign in again on their next request.
  • toutes les données protégées par le Key Ring ne peuvent plus être déchiffrées.Any data protected with the key ring can no longer be decrypted. Ceci peut inclure des jetons CSRF et des cookies TempData ASP.NET Core MVC.This may include CSRF tokens and ASP.NET Core MVC TempData cookies.

Pour configurer la protection des données sous IIS afin de rendre persistante le Key Ring, adoptez l’une des approches suivantes :To configure data protection under IIS to persist the key ring, use one of the following approaches:

  • Créer des clés de Registre de la protection des donnéesCreate Data Protection Registry Keys

    Les clés de la protection des données utilisées par les applications ASP.NET Core sont stockées dans le registre externe aux applications.Data protection keys used by ASP.NET Core apps are stored in the registry external to the apps. Afin de conserver les clés pour une application donnée, créez des clés de Registre pour le pool d’applications.To persist the keys for a given app, create registry keys for the app pool.

    Pour les installations IIS autonomes hors d’une batterie de serveurs, le script PowerShell Provision-AutoGenKeys.ps1 de protection des données peut être utilisé pour chaque pool d’applications utilisé avec une application ASP.NET Core.For standalone, non-webfarm IIS installations, the Data Protection Provision-AutoGenKeys.ps1 PowerShell script can be used for each app pool used with an ASP.NET Core app. Ce script crée une clé de Registre dans le Registre HKLM, accessible uniquement pour le compte du processus Worker du pool d’applications de l’application.This script creates a registry key in the HKLM registry that's accessible only to the worker process account of the app's app pool. Les clés sont chiffrées au repos à l’aide de DPAPI avec une clé à l’échelle de la machine.Keys are encrypted at rest using DPAPI with a machine-wide key.

    Dans les scénarios de batterie de serveurs Web, vous pouvez configurer une application afin qu’elle utilise un chemin UNC pour stocker son Key Ring de protection des données.In web farm scenarios, an app can be configured to use a UNC path to store its data protection key ring. Par défaut, les clés de protection des données ne sont pas chiffrées.By default, the data protection keys aren't encrypted. Vérifiez que les autorisations de fichiers pour le partage réseau sont limitées au compte Windows sous lequel s’exécute l’application.Ensure that the file permissions for the network share are limited to the Windows account the app runs under. Un certificat X509 peut être utilisé pour protéger les clés au repos.An X509 certificate can be used to protect keys at rest. Mettez en œuvre un mécanisme permettant aux utilisateurs de charger des certificats : placez les certificats dans le magasin de certificats approuvés de l’utilisateur et vérifiez qu’ils sont disponibles sur toutes les machines où s’exécute l’application de l’utilisateur.Consider a mechanism to allow users to upload certificates: Place certificates into the user's trusted certificate store and ensure they're available on all machines where the user's app runs. Pour plus d’informations, consultez Configurer la protection des données ASP.NET Core.See Configure ASP.NET Core Data Protection for details.

  • Configurer le pool d’applications IIS pour charger le profil utilisateurConfigure the IIS Application Pool to load the user profile

    Ce paramètre se trouve dans la section Modèle de processus sous les Paramètres avancés du pool d’applications.This setting is in the Process Model section under the Advanced Settings for the app pool. Définissez Charger le profil utilisateur sur True.Set Load User Profile to True. Cela permet de stocker les clés sous le répertoire du profil utilisateur et de les protéger à l’aide de DPAPI avec une clé propre au compte d’utilisateur utilisé par le pool d’applications.This stores keys under the user profile directory and protects them using DPAPI with a key specific to the user account used by the app pool.

  • Utiliser le système de fichiers comme magasin de Key RingUse the file system as a key ring store

    Ajustez le code d’application pour utiliser le système de fichiers comme magasin de porte-clés.Adjust the app code to use the file system as a key ring store. Utilisez un certificat X509 pour protéger le Key Ring et vérifiez qu’il s’agit d’un certificat approuvé.Use an X509 certificate to protect the key ring and ensure the certificate is a trusted certificate. S’il s’agit d’un certificat auto-signé, placez-le dans le magasin Racine approuvée.If the certificate is self-signed, place the certificate in the Trusted Root store.

    Quand vous utilisez IIS dans une batterie de serveurs web :When using IIS in a web farm:

    • Utilisez un partage de fichiers accessible par tous les ordinateurs.Use a file share that all machines can access.
    • Déployez un certificat X509 sur chaque ordinateur.Deploy an X509 certificate to each machine. Configurez la protection des données dans le code.Configure data protection in code.
  • Définir une stratégie au niveau de l’ordinateur pour la protection des donnéesSet a machine-wide policy for data protection

    Le système de protection des données offre une prise en charge limitée de la définition d’une stratégie au niveau de l’ordinateur par défaut pour toutes les applications qui utilisent les API de protection des données.The data protection system has limited support for setting a default machine-wide policy for all apps that consume the Data Protection APIs. Pour plus d'informations, consultez Protection des données ASP.NET Core.For more information, see Protection des données ASP.NET Core.

Configuration de la sous-applicationSub-application configuration

Les sous-applications ajoutées sous l’application racine ne doivent pas inclure le module ASP.NET Core en tant que gestionnaire.Sub-apps added under the root app shouldn't include the ASP.NET Core Module as a handler. Si le module est ajouté en guise de gestionnaire dans le fichier web.config d’une sous-application, une Erreur de serveur interne 500.19 faisant référence au fichier config défaillant est reçue lors de la tentative de navigation dans la sous-application.If the module is added as a handler in a sub-app's web.config file, a 500.19 Internal Server Error referencing the faulty config file is received when attempting to browse the sub-app.

L’exemple suivant présente un fichier web.config publié pour une sous-application ASP.NET Core :The following example shows a published web.config file for an ASP.NET Core sub-app:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <aspNetCore processPath="dotnet" 
        arguments=".\MyApp.dll" 
        stdoutLogEnabled="false" 
        stdoutLogFile=".\logs\stdout" />
    </system.webServer>
  </location>
</configuration>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <aspNetCore processPath="dotnet" 
      arguments=".\MyApp.dll" 
      stdoutLogEnabled="false" 
      stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

Si vous hébergez une sous-application non-ASP.NET Core sous une application ASP.NET Core, supprimez explicitement le gestionnaire hérité dans le fichier web.config de la sous-application :When hosting a non-ASP.NET Core sub-app underneath an ASP.NET Core app, explicitly remove the inherited handler in the sub-app web.config file:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <remove name="aspNetCore" />
    </handlers>
    <aspNetCore processPath="dotnet" 
      arguments=".\MyApp.dll" 
      stdoutLogEnabled="false" 
      stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

Pour plus d’informations sur la configuration du module ASP.NET Core, consultez la rubrique Introduction au module ASP.NET Core et les Informations de référence sur la configuration du module ASP.NET Core.For more information on configuring the ASP.NET Core Module, see the Introduction to ASP.NET Core Module topic and the ASP.NET Core Module configuration reference.

Configuration d’IIS avec web.configConfiguration of IIS with web.config

La configuration d’IIS est influencée par la section <system.webServer> de web.config pour les fonctionnalités d’IIS qui s’appliquent à une configuration de proxy inverse.IIS configuration is influenced by the <system.webServer> section of web.config for those IIS features that apply to a reverse proxy configuration. Si IIS est configuré au niveau du serveur pour utiliser la compression dynamique, l’élément <urlCompression> dans le fichier web.config de l’application peut le désactiver.If IIS is configured at the server level to use dynamic compression, the <urlCompression> element in the app's web.config file can disable it.

Pour plus d’informations, consultez Informations de référence sur la configuration de <system.webServer>, Informations de référence sur la configuration du module ASP.NET Core et Modules IIS avec ASP.NET Core.For more information, see the configuration reference for <system.webServer>, ASP.NET Core Module Configuration Reference, and IIS Modules with ASP.NET Core. Pour définir des variables d’environnement pour des applications individuelles exécutées dans des pools de données isolés, (prises en charge pour IIS 10.0 ou version ultérieure), consultez la section AppCmd.exe command de la rubrique Variables d’environnement <environmentVariables> dans la documentation de référence IIS.To set environment variables for individual apps running in isolated app pools (supported for IIS 10.0 or later), see the AppCmd.exe command section of the Environment Variables <environmentVariables> topic in the IIS reference documentation.

Sections de configuration de web.configConfiguration sections of web.config

Les sections de configuration des applications ASP.NET 4.x dans web.config ne sont pas utilisées par les applications ASP.NET Core pour la configuration :Configuration sections of ASP.NET 4.x apps in web.config aren't used by ASP.NET Core apps for configuration:

  • <system.web><system.web>
  • <appSettings><appSettings>
  • <connectionStrings><connectionStrings>
  • <location><location>

Les applications ASP.NET Core sont configurées à l’aide d’autres fournisseurs de configuration.ASP.NET Core apps are configured using other configuration providers. Pour plus d’informations, consultez Configuration.For more information, see Configuration.

Pools d'applicationsApplication Pools

L’isolation des pools d’applications est déterminée par le modèle d’hébergement :App pool isolation is determined by the hosting model:

  • Hébergement in-process – Les applications doivent s’exécuter dans des pools d’applications distincts.In-process hosting – Apps are required to run in separate app pools.
  • Hébergement out-of-process – Nous vous recommandons d’isoler les applications les unes des autres en exécutant chaque application dans son propre pool d’applications.Out-of-process hosting – We recommend isolating the apps from each other by running each app in its own app pool.

La boîte de dialogue Ajouter un site web d’IIS applique un seul pool d’applications par application par défaut.The IIS Add Website dialog defaults to a single app pool per app. Quand un Nom du site est fourni, le texte est automatiquement transféré vers la zone de texte Pool d’applications.When a Site name is provided, the text is automatically transferred to the Application pool textbox. Un nouveau pool d’applications est créé avec le nom du site une fois qu’il est ajouté.A new app pool is created using the site name when the site is added.

Quand vous hébergez plusieurs sites Web sur un même serveur, nous vous recommandons d’isoler les applications les unes des autres en exécutant chaque application dans son propre pool d’applications.When hosting multiple websites on a server, we recommend isolating the apps from each other by running each app in its own app pool. La boîte de dialogue Ajouter un site Web d’IIS applique cette configuration par défaut.The IIS Add Website dialog defaults to this configuration. Quand un Nom du site est fourni, le texte est automatiquement transféré vers la zone de texte Pool d’applications.When a Site name is provided, the text is automatically transferred to the Application pool textbox. Un nouveau pool d’applications est créé avec le nom du site une fois qu’il est ajouté.A new app pool is created using the site name when the site is added.

Identité du pool d’applicationsApplication Pool Identity

Un compte d’identité du pool d’applications permet à une application de s’exécuter sous un compte unique sans qu’il soit nécessaire de créer et de gérer des domaines ou des comptes locaux.An app pool identity account allows an app to run under a unique account without having to create and manage domains or local accounts. Sur IIS 8.0 ou version ultérieure, le processus Worker d’administration IIS (WAS) crée un compte virtuel avec le nom du nouveau pool d’applications et exécute les processus Worker du pool d’applications sous ce compte par défaut.On IIS 8.0 or later, the IIS Admin Worker Process (WAS) creates a virtual account with the name of the new app pool and runs the app pool's worker processes under this account by default. Dans la console de gestion IIS, sous Paramètres avancés pour le pool d’applications, vérifiez que l’Identité est configurée pour utiliser ApplicationPoolIdentity :In the IIS Management Console under Advanced Settings for the app pool, ensure that the Identity is set to use ApplicationPoolIdentity:

Boîte de dialogue Paramètres avancés du pool applications

Le processus de gestion IIS crée un identificateur sécurisé avec le nom du pool d’applications dans le système de sécurité Windows.The IIS management process creates a secure identifier with the name of the app pool in the Windows Security System. Les ressources peuvent être sécurisées à l’aide de cette identité.Resources can be secured using this identity. Toutefois, cette identité n’est pas un compte d’utilisateur réel et n’apparaît pas dans la console de gestion d’utilisateurs Windows.However, this identity isn't a real user account and doesn't show up in the Windows User Management Console.

Si le processus Worker IIS a besoin d’un accès élevé à l’application, modifiez la liste de contrôle d’accès (ACL) du répertoire contenant l’application :If the IIS worker process requires elevated access to the app, modify the Access Control List (ACL) for the directory containing the app:

  1. Ouvrez l’Explorateur Windows et accédez au répertoire.Open Windows Explorer and navigate to the directory.

  2. Cliquez avec le bouton droit sur le répertoire et sélectionnez Propriétés.Right-click on the directory and select Properties.

  3. Sous l’onglet Sécurité, sélectionnez le bouton Modifier, puis le bouton Ajouter.Under the Security tab, select the Edit button and then the Add button.

  4. Sélectionnez le bouton Emplacements, puis vérifiez que le système est sélectionné.Select the Locations button and make sure the system is selected.

  5. Entrez IIS AppPool\<app_pool_name> dans la zone Entrer les noms des objets à sélectionner.Enter IIS AppPool\<app_pool_name> in Enter the object names to select area. Sélectionnez le bouton Vérifier les noms.Select the Check Names button. Pour le DefaultAppPool, vérifiez les noms à l’aide de IIS AppPool\DefaultAppPool.For the DefaultAppPool check the names using IIS AppPool\DefaultAppPool. Lorsque le bouton Vérifier les noms est sélectionné, une valeur de DefaultAppPool est indiquée dans la zone des noms d’objets.When the Check Names button is selected, a value of DefaultAppPool is indicated in the object names area. Il n’est pas possible d’entrer le nom du pool d’applications directement dans la zone des noms d’objets.It isn't possible to enter the app pool name directly into the object names area. Utilisez le format IIS AppPool\<app_pool_name> lors de la vérification du nom de l’objet.Use the IIS AppPool\<app_pool_name> format when checking for the object name.

    Sélectionnez la boîte de dialogue utilisateurs ou groupes pour le dossier d’applications : ajoutez le nom du pool d’applications « DefaultAppPool » à « IIS AppPool" dans la zone des noms d’objets avant de sélectionner « Vérifier les noms ».

  6. Sélectionnez OK.Select OK.

    Sélectionnez la boîte de dialogue utilisateurs ou groupes pour le dossier d’applications : après avoir sélectionné « Vérifier les noms », le nom d’objet « DefaultAppPool » est indiqué dans la zone des noms d’objets.

  7. Les autorisations Lire & exécuter doivent être accordées par défaut.Read & execute permissions should be granted by default. Fournissez des autorisations supplémentaires si nécessaire.Provide additional permissions as needed.

L’accès peut également être octroyé par le biais d’une invite de commandes à l’aide de l’outil ICACLS.Access can also be granted at a command prompt using the ICACLS tool. À l’aide de DefaultAppPool en exemple, la commande suivante est utilisée :Using the DefaultAppPool as an example, the following command is used:

ICACLS C:\sites\MyWebApp /grant "IIS AppPool\DefaultAppPool":F

Pour plus d’informations, consultez la rubrique icacls.For more information, see the icacls topic.

Prise en charge de HTTP/2HTTP/2 support

HTTP/2 est pris en charge avec ASP.NET Core dans les scénarios de déploiement IIS suivants :HTTP/2 is supported with ASP.NET Core in the following IIS deployment scenarios:

  • In-processIn-process
    • Windows Server 2016/Windows 10 ou version ultérieure ; IIS 10 ou version ultérieureWindows Server 2016/Windows 10 or later; IIS 10 or later
    • TLS 1.2 ou connexion ultérieureTLS 1.2 or later connection
  • Out-of-processOut-of-process
    • Windows Server 2016/Windows 10 ou version ultérieure ; IIS 10 ou version ultérieureWindows Server 2016/Windows 10 or later; IIS 10 or later
    • Les connexions au serveur périphérique public utilisent HTTP/2, mais la connexion de proxy inverse pour le serveur Kestrel utilise HTTP/1.1.Public-facing edge server connections use HTTP/2, but the reverse proxy connection to the Kestrel server uses HTTP/1.1.
    • TLS 1.2 ou connexion ultérieureTLS 1.2 or later connection

Pour un déploiement in-process lorsqu’une connexion HTTP/2 est établie, HttpRequest.Protocol retourne HTTP/2.For an in-process deployment when an HTTP/2 connection is established, HttpRequest.Protocol reports HTTP/2. Pour un déploiement in-process lorsqu’une connexion HTTP/2 est établie, HttpRequest.Protocol retourne HTTP/1.1.For an out-of-process deployment when an HTTP/2 connection is established, HttpRequest.Protocol reports HTTP/1.1.

Pour plus d’informations sur les modèles d’hébergement in-process et out-of-process, consultez la rubrique Module ASP.NET Core et Informations de référence sur la configuration du Module ASP.NET Core.For more information on the in-process and out-of-process hosting models, see the Module ASP.NET Core topic and the Informations de référence sur la configuration du Module ASP.NET Core.

HTTP/2 est pris en charge pour les déploiements out-of-process qui répondent aux exigences de base suivantes :HTTP/2 is supported for out-of-process deployments that meet the following base requirements:

  • Windows Server 2016/Windows 10 ou version ultérieure ; IIS 10 ou version ultérieureWindows Server 2016/Windows 10 or later; IIS 10 or later
  • Les connexions au serveur périphérique public utilisent HTTP/2, mais la connexion de proxy inverse pour le serveur Kestrel utilise HTTP/1.1.Public-facing edge server connections use HTTP/2, but the reverse proxy connection to the Kestrel server uses HTTP/1.1.
  • Version cible de .Net Framework : non applicable aux déploiements out-of-process, étant donné que la connexion HTTP/2 est gérée entièrement par IIS.Target framework: Not applicable to out-of-process deployments, since the HTTP/2 connection is handled entirely by IIS.
  • TLS 1.2 ou connexion ultérieureTLS 1.2 or later connection

Si une connexion HTTP/2 est établie, HttpRequest.Protocol retourne HTTP/1.1.If an HTTP/2 connection is established, HttpRequest.Protocol reports HTTP/1.1.

HTTP/2 est activé par défaut.HTTP/2 is enabled by default. Les connexions reviennent à HTTP/1.1 si une connexion HTTP/2 n’est pas établie.Connections fall back to HTTP/1.1 if an HTTP/2 connection isn't established. Pour plus d’informations sur la configuration de HTTP/2 avec les déploiements IIS, consultez HTTP/2 sur IIS.For more information on HTTP/2 configuration with IIS deployments, see HTTP/2 on IIS.

Déploiement de ressources pour les administrateurs IISDeployment resources for IIS administrators

Pour en savoir plus sur IIS, consultez la documentation IIS.Learn about IIS in-depth in the IIS documentation.
Documentation IISIIS documentation

Découvrez les modèles de déploiement d’application .NET Core.Learn about .NET Core app deployment models.
Déploiement d’applications .NET Core.NET Core application deployment

Découvrez comment le module ASP.NET Core permet au serveur web Kestrel d’utiliser IIS ou IIS Express en tant que serveur proxy inverse.Learn how the ASP.NET Core Module allows the Kestrel web server to use IIS or IIS Express as a reverse proxy server.
Module ASP.NET CoreASP.NET Core Module

Découvrez comment configurer le module ASP.NET Core pour héberger des applications ASP.NET Core.Learn how to configure the ASP.NET Core Module for hosting ASP.NET Core apps.
Informations de référence sur la configuration du Module ASP.NET CoreASP.NET Core Module configuration reference

Découvrez la structure de répertoires des applications ASP.NET Core publiées.Learn about the directory structure of published ASP.NET Core apps.
Structure de répertoiresDirectory structure

Découvrez les modules IIS actifs et inactifs pour les applications ASP.NET Core et comment gérer les modules IIS.Discover active and inactive IIS modules for ASP.NET Core apps and how to manage IIS modules.
Modules IISIIS modules

Découvrez comment diagnostiquer les problèmes liés aux déploiements IIS d’applications ASP.NET Core.Learn how to diagnose problems with IIS deployments of ASP.NET Core apps.
Résoudre les problèmesTroubleshoot

Repérer les erreurs courantes liées à l’hébergement d’applications ASP.NET Core sur IIS.Distinguish common errors when hosting ASP.NET Core apps on IIS.
Informations de référence sur les erreurs courantes pour Azure App Service et IISCommon errors reference for Azure App Service and IIS

Ressources supplémentairesAdditional resources