Déployer des applications ASP.NET Core sur Azure App Service

Azure App Service est un service de plateforme de cloud computing Microsoft qui permet d’héberger des applications web, notamment ASP.NET Core.

Modèles d’application web fiables

Consultez Le modèle d’application web fiable for.NETvidéos YouTube et l’article pour obtenir des conseils sur la création d’une application ASP.NET Core moderne, fiable, performante, testable, économique et évolutive, que ce soit à partir de zéro ou en refactorisant une application existante.

Ressources utiles

App Service Documentation héberge la documentation, les tutoriels, les exemples, les guides pratiques et d’autres ressources Azure. Voici deux didacticiels importants qui abordent l’hébergement d’applications ASP.NET Core :

Créer une application web ASP.NET Core dans Azure
Utilisez Visual Studio pour créer et déployer une application web ASP.NET Core dans Azure App Service sur Windows.

Créer une application ASP.NET Core dans App Service sur Linux
Utilisez la ligne de commande pour créer et déployer une application web ASP.NET Core dans Azure App Service sur Linux.

Consultez le tableau de bord d’ASP.NET Core sur App Service pour connaître la version d’ASP.NET Core disponible sur Azure App Service.

Abonnez-vous au dépôt des annonces relatives à App Service pour effectuer un monitoring des problèmes. L’équipe App Service poste régulièrement les annonces et les scénarios arrivant dans App Service.

Les articles suivants sont disponibles dans la documentation d’ASP.NET Core :

Publier une application ASP.NET Core sur Azure avec Visual Studio
Découvrez comment publier une application ASP.NET Core sur Azure App Service à l’aide de Visual Studio.

Créer votre premier pipeline
Configurez une build CI pour une application ASP.NET Core, puis créez une version de déploiement continu sur Azure App Service.

Bac à sable Azure Web App
Découvrez les limitations d’exécution du runtime Azure App Service appliquées par la plateforme Azure Apps.

Résoudre les problèmes et effectuer le débogage des projets ASP.NET Core
Comprenez et résolvez les avertissements et les erreurs avec les projets ASP.NET Core.

Configuration de l’application

Plate-forme

L’architecture de plateforme (x86/x64) d’une application App Services est définie dans les paramètres de l’application au sein du portail Azure pour les applications hébergées sur une instance de calcul de série A (de base) ou supérieure. Vérifiez que les paramètres de publication de l’application (par exemple dans le profil de publication (.pubxml) de Visual Studio) correspondent au paramètre de configuration du service de l’application dans le portail Azure.

Des runtimes pour les applications 64 bits (x64) et 32 bits (x 86) sont présents sur Azure App Service. Le SDK .NET Core disponible sur App Service est 32 bits, mais vous pouvez déployer des applications 64 bits crées localement en utilisant la console Kudu ou le processus de publication de Visual Studio. Pour plus d’informations, consultez la section Publier et déployer l’application.

Concernant les applications avec des dépendances natives, des runtimes pour les applications 32 bits (x86) sont présents sur Azure App Service. Le SDK .NET Core disponible sur App Service est 32 bits.

Pour plus d’informations sur les composants et les méthodes de distribution du framework .NET Core, par exemple concernant le runtime .NET Core et le kit SDK .NET Core, consultez À propos de .NET Core : Composition.

Packages

Ajoutez les packages NuGet suivants pour fournir des fonctionnalités de journalisation automatique aux applications déployées sur Azure App Service :

Les packages précédents doivent être référencés explicitement dans le fichier projet de l’application.

Remplacer la configuration de l’application à l’aide du Portail Azure

Les paramètres d’application dans le portail Azure vous permettent de définir des variables d’environnement pour l’application. Celles-ci peuvent être utilisées par le Fournisseur de configuration des variables d’environnement.

Quand un paramètre d’application est créé ou modifié dans le portail Azure et que le bouton Enregistrer est sélectionné, Azure App redémarre. La variable d’environnement est à la disposition de l’application après le redémarrage du service.

Quand une application utilise l’hôte générique, les variables d’environnement sont chargées dans la configuration de l’application au moment où CreateDefaultBuilder est appelé pour générer l’hôte. Pour plus d’informations, consultez Hôte générique .NET dans ASP.NET Core et Fournisseur de configuration de variables d’environnement.

Les paramètres d’application dans le portail Azure vous permettent de définir des variables d’environnement pour l’application. Celles-ci peuvent être utilisées par le Fournisseur de configuration des variables d’environnement.

Quand un paramètre d’application est créé ou modifié dans le portail Azure et que le bouton Enregistrer est sélectionné, Azure App redémarre. La variable d’environnement est à la disposition de l’application après le redémarrage du service.

Quand une application utilise l’hôte web, les variables d’environnement sont chargées dans la configuration de l’application au moment où CreateDefaultBuilder est appelé pour générer l’hôte. Pour plus d’informations, consultez Hôte web ASP.NET Core et Fournisseur de configuration de variables d’environnement.

Scénarios avec un serveur proxy et un équilibreur de charge

Le middleware d’intégration IIS, qui configure le middleware des en-têtes transférés lors de l’hébergement out-of-process, 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. 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. Pour plus d’informations, consultez l’article Configurer ASP.NET Core pour l’utilisation de serveurs proxy et d’équilibreurs de charge.

Surveillance et journalisation

Les applications ASP.NET Core déployées sur App Service reçoivent automatiquement une extension App Service, Intégration de journalisation ASP.NET Core. L’extension permet d’intégrer la journalisation dans les applications ASP.NET Core sur Azure App Service.

Les applications ASP.NET Core déployées sur App Service reçoivent automatiquement une extension App Service, Extensions de journalisation ASP.NET Core. L’extension permet d’intégrer la journalisation dans les applications ASP.NET Core sur Azure App Service.

Pour des informations de surveillance, de journalisation et de dépannage, consultez les articles suivants :

Surveiller les applications dans Azure App Service
Découvrez comment consulter les quotas et les métriques des applications et des plans App Service.

Activer la journalisation des diagnostics pour les applications dans Azure App Service
Découvrez comment activer et accéder à la journalisation des diagnostics pour les codes d’état HTTP, les requêtes en échec et les activités de serveur web.

Gérer les erreurs dans ASP.NET Core
Découvrez les approches courantes permettant de gérer les erreurs dans les applications ASP.NET Core.

Résoudre les problèmes liés à ASP.NET Core sur Azure App Service et IIS
Découvrez comment diagnostiquer les problèmes de déploiements Azure App Service avec les applications ASP.NET Core.

Résolution des problèmes courants pour Azure App Service et IIS avec ASP.NET Core
Découvrez les erreurs de configuration de déploiement courantes dans les applications hébergées par Azure App Service/IIS, ainsi que des conseils de dépannage.

Porte-clés de Protection des données et emplacements de déploiement

Les clés de Protection des données sont persistantes dans le dossier %HOME%\ASP.NET\DataProtection-Keys. Ce dossier est alimenté par le stockage réseau et synchronisé sur tous les ordinateurs hébergeant l’application. Les clés ne sont pas protégées au repos. Ce dossier fournit le porte-clés à toutes les instances d’une application dans un seul emplacement de déploiement. Les emplacements de déploiement distincts, tels que Préproduction et Production, ne partagent pas de porte-clés.

Lors d’une permutation entre les emplacements de déploiement, aucun système utilisant la protection des données ne peut déchiffrer les données stockées à l’aide du porte-clés au sein de l’emplacement précédent. Le middleware (intergiciel) ASP.NET Cookie utilise la protection des données pour protéger ses cookies. Cela entraîne la déconnexion des utilisateurs des applications qui utilisent le middleware ASP.NET Cookie standard. Pour une solution de porte-clés indépendante de l’emplacement, utilisez un fournisseur de porte-clés externe, tel que :

  • Stockage Blob Azure
  • Azure Key Vault
  • Magasin SQL
  • Cache Redis

Pour plus d’informations, consultez Fournisseurs de stockage de clés dans ASP.NET Core.

Déployer une application ASP.NET Core qui utilise une préversion de .NET Core

Pour déployer une application qui utilise une préversion de .NET Core, consultez les ressources suivantes. Ces approches sont également utilisées quand le runtime est disponible mais que le kit SDK n’a pas été installé sur Azure App Service.

Consultez le tableau de bord d’ASP.NET Core sur App Service pour connaître la version d’ASP.NET Core disponible sur Azure App Service.

Pour plus d’informations sur la version du kit SDK .NET à sélectionner dans les déploiements autonomes, consultez Sélectionner la version .NET Core à utiliser.

Spécifier la version du kit SDK .NET Core à l’aide d’Azure Pipelines

Utilisez les scénarios CI/CD d’Azure App Service pour configurer une build d’intégration continue avec Azure DevOps. Une fois la build Azure DevOps créée, configurez-la éventuellement pour qu’elle utilise une version spécifique du kit SDK.

Spécifier la version du kit SDK .NET Core

Quand vous utilisez le centre de déploiement App Service pour créer une build Azure DevOps, le pipeline de build par défaut comprend des étapes pour Restore, Build, Test et Publish. Pour spécifier la version du kit SDK, sélectionnez le bouton Ajouter (+) dans la liste des travaux de l’agent afin d’ajouter une nouvelle étape. Recherchez kit SDK .NET Core dans la barre de recherche.

Add the .NET Core SDK step

Déplacez l’étape en première position dans la build pour que les étapes qui suivent utilisent la version spécifiée du kit SDK .NET Core. Spécifiez la version du kit SDK .NET Core. Dans cet exemple, le kit SDK a la valeur 3.0.100.

Completed SDK step

Pour publier un déploiement autonome (SCD), configurez celui-ci à l’étape Publish, et indiquez l’identificateur de runtime (RID).

Self-contained publish

Déployer une application en préversion autonome

Un déploiement autonome (SCD) qui cible une préversion runtime exécute le runtime de la préversion dans le déploiement.

Pendant le déploiement d’une application autonome :

Suivez les instructions de la section Déployer l’application autonome.

Utiliser Docker avec Web Apps pour conteneurs

Le Docker Hub à l’adresse https://hub.docker.com/_/microsoft-dotnet contient les dernières images de Docker en préversion. Les images peuvent être utilisées comme images de base. Utilisez l’image pour effectuer un déploiement sur Web Apps pour conteneurs normalement.

Installer l’extension de site de version Preview

Si un problème se produit durant l’utilisation de l’extension de site en préversion, ouvrez un ticket relatif au problème dotnet/AspNetCore.

  1. Dans le portail Azure, accédez à App Service.
  2. Sélectionnez l’application web.
  3. Tapez « ex » dans la zone de recherche pour filtrer sur les « Extensions » ou faites défiler la liste outils de gestion.
  4. Sélectionnez Extensions.
  5. Sélectionnez Ajouter.
  6. Sélectionnez l’extension ASP.NET Core {X.Y} ({x64|x86}) Runtime dans la liste, où {X.Y} correspond à la préversion d’ASP.NET Core et {x64|x86} spécifie la plateforme.
  7. Sélectionnez OK pour accepter les conditions légales.
  8. Sélectionnez OK pour installer l’extension.

Une fois l’opération effectuée, la dernière préversion de .NET Core est installée. Vérifiez l’installation :

  1. Sélectionnez Outils avancés.

  2. Sélectionnez Go dans Outils avancés.

  3. Sélectionnez l’élément de menu Console de débogage>PowerShell.

  4. À l’invite PowerShell, exécutez la commande suivante. Remplacez {X.Y} par la version du runtime ASP.NET Core et {PLATFORM} par la plateforme dans la commande :

    Test-Path D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.{PLATFORM}\
    

    La commande retourne True quand le runtime de la préversion x64 est installée.

Remarque

L’architecture de plateforme (x86/x64) d’une application App Services est définie dans les paramètres de l’application au sein du portail Azure pour les applications hébergées sur une instance de calcul de série A (de base) ou supérieure. Vérifiez que les paramètres de publication de l’application (par exemple dans le profil de publication (.pubxml) de Visual Studio) correspondent au paramètre de configuration du service de l’application dans le portail Azure.

Si l’application s’exécute en mode in-process et si la plateforme est configurée pour une architecture 64 bits (x64), le module ASP.NET Core utilise le runtime de la préversion 64 bits, le cas échéant. Installez l’extension Runtime ASP.NET Core {X.Y} (x64) à l’aide du portail Azure.

Une fois que vous avez installé la préversion du runtime x64, exécutez la commande suivante dans la fenêtre Commande Azure Kudu PowerShell pour vérifier l’installation. Remplacez {X.Y} par la version du runtime ASP.NET Core dans la commande suivante :

Test-Path D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.x64\

La commande retourne True quand le runtime de la préversion x64 est installée.

Remarque

Les extensions ASP.NET Core permettent d’activer des fonctionnalités supplémentaires pour ASP.NET Core sur Azure App Services, par exemple la journalisation Azure. L’extension est installée automatiquement quand vous effectuez le déploiement à partir de Visual Studio. Si l’extension n’est pas installée, installez-la pour l’application.

Utiliser l’extension de site de la version Preview avec un modèle ARM

Si un modèle ARM est utilisé pour créer et déployer des applications, le type de ressource Microsoft.Web/sites/siteextensions peut être utilisé pour ajouter l’extension de site à une application web. Dans l’exemple suivant, l’extension de site du runtime ASP.NET Core 5.0 (x64) (AspNetCoreRuntime.5.0.x64) est ajoutée à l’application :

{
    ...
    "parameters": {
        "site_name": {
            "defaultValue": "{SITE NAME}",
            "type": "String"
        },
        ...
    },       
    ...
    "resources": [
        ...
        {
            "type": "Microsoft.Web/sites/siteextensions",
            "apiVersion": "2018-11-01",
            "name": "[concat(parameters('site_name'), '/AspNetCoreRuntime.5.0.x64')]",
            "location": "[resourceGroup().location]",
            "dependsOn": [
                "[resourceId('Microsoft.Web/sites', parameters('site_name'))]"
            ]
        }
    ]
}
    

Pour l’espace réservé {SITE NAME}, utilisez le nom de l’application dans Azure App Service (par exemple contoso).

Publier et déployer l’application

Pour un déploiement 64 bits :

  • Utilisez un SDK .NET Core 64 bits pour générer une application 64 bits.
  • Définissez Plateforme sur 64 bits dans Configuration>Paramètres généraux d’App Service. L’application doit utiliser un plan de service De base ou supérieur pour permettre le choix du nombre de bits de la plateforme.

Déployer l’application en fonction du framework

  1. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le projet, puis sélectionnez Publier. Vous pouvez également sélectionner Build>Publier {Nom d’application} dans la barre d’outils de Visual Studio.
  2. Dans la boîte de dialogue Publier, sélectionnez Azure>Suivant.
  3. Sélectionnez le service Azure.
  4. Sélectionnez Avancé. La boîte de dialogue Publier s’ouvre.
  5. Sélectionnez un groupe de ressources et un plan d’hébergement, ou créez-en d’autres.
  6. Cliquez sur Terminer.
  7. Dans la page Publier :
    • Pour Configuration, sélectionnez l’icône de stylo afin de Modifier la configuration :
      • Confirmez que la configuration Mise en production est sélectionnée.
      • Dans la liste déroulante Mode de déploiement, sélectionnez Dépendant du framework.
      • Dans la liste déroulante Runtime cible, sélectionnez le runtime souhaité. Par défaut, il s’agit de win-x86.
    • Pour supprimer des fichiers supplémentaires au moment du déploiement, ouvrez Options de publication des fichiers, puis cochez la case permettant de supprimer les fichiers supplémentaires à l’emplacement de destination.
    • Cliquez sur Enregistrer.
    • Cliquez sur Publier.

Déployer l’application autonome

Utilisez Visual Studio ou l’interface CLI .NET Core pour un déploiement autonome (SCD).

  1. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le projet, puis sélectionnez Publier. Vous pouvez également sélectionner Build>Publier {Nom d’application} dans la barre d’outils de Visual Studio.
  2. Dans la boîte de dialogue Publier, sélectionnez Azure>Suivant.
  3. Sélectionnez le service Azure.
  4. Sélectionnez Avancé. La boîte de dialogue Publier s’ouvre.
  5. Sélectionnez un groupe de ressources et un plan d’hébergement, ou créez-en d’autres.
  6. Cliquez sur Terminer.
  7. Dans la page Publier :
    • Pour Configuration, sélectionnez l’icône de stylo afin de Modifier la configuration :
      • Confirmez que la configuration Mise en production est sélectionnée.
      • Dans la liste déroulante Mode de déploiement, sélectionnez Autonome.
      • Dans la liste déroulante Runtime cible, sélectionnez le runtime souhaité. Par défaut, il s’agit de win-x86.
    • Pour supprimer des fichiers supplémentaires au moment du déploiement, ouvrez Options de publication des fichiers, puis cochez la case permettant de supprimer les fichiers supplémentaires à l’emplacement de destination.
    • Cliquez sur Enregistrer.
    • Cliquez sur Publier.

Paramètres de protocole (HTTPS)

Les liaisons de protocole sécurisé permettent de spécifier le certificat à utiliser pour répondre à des requêtes via HTTPS. La liaison nécessite un certificat privé valide (.pfx) émis pour le nom d’hôte spécifique. Pour plus d’informations, consultez Tutoriel : Lier un certificat SSL personnalisé existant à Azure App Service.

Transformer web.config

Si vous devez transformer web.config au moment de la publication (par exemple pour définir des variables d’environnement en fonction de la configuration, du profil ou de l’environnement), consultez Transformer web.config.

Ressources supplémentaires

Azure App Service sur Windows Server utilise IIS (Internet Information Services). Kestrel and YARP sur le front-end fournit l’équilibreur de charge. Les rubriques suivantes se rapportent à la technologie IIS sous-jacente :