Déploiement d’une application web ASP.NET avec SQL Server Compact à l’aide de Visual Studio ou de Visual Web Developer : Déploiement sur IIS en tant qu’environnement de test - 5 sur 12
par Tom Dykstra
Télécharger le projet de démarrage
Cette série de tutoriels vous montre comment déployer (publier) un projet d’application web ASP.NET qui inclut une base de données SQL Server Compact à l’aide de Visual Studio 2012 RC ou Visual Studio Express RC 2012 pour web. Vous pouvez également utiliser Visual Studio 2010 si vous installez la mise à jour de publication web. Pour une présentation de la série, consultez le premier tutoriel de la série.
Pour obtenir un didacticiel qui montre les fonctionnalités de déploiement introduites après la version rc de Visual Studio 2012, montre comment déployer SQL Server éditions autres que SQL Server Compact et montre comment déployer sur Azure App Service Web Apps, consultez déploiement web ASP.NET à l’aide de Visual Studio.
Vue d’ensemble
Ce tutoriel montre comment déployer une application web ASP.NET sur IIS sur l’ordinateur local.
Lorsque vous développez une application, vous testez généralement en l’exécutant dans Visual Studio. Par défaut, cela signifie que vous utilisez le serveur de développement Visual Studio (également appelé Cassini). Le serveur de développement Visual Studio facilite les tests pendant le développement dans Visual Studio, mais il ne fonctionne pas exactement comme IIS. Par conséquent, il est possible qu’une application s’exécute correctement lorsque vous la testez dans Visual Studio, mais échoue lorsqu’elle est déployée sur IIS dans un environnement d’hébergement.
Vous pouvez tester votre application de manière plus fiable en procédant comme suit :
- Utilisez IIS Express ou IIS complet au lieu de Visual Studio Development Server lorsque vous testez dans Visual Studio pendant le développement. Cette méthode émule généralement plus précisément la façon dont votre site s’exécutera sous IIS. Toutefois, cette méthode ne teste pas votre processus de déploiement ni ne valide que le résultat du processus de déploiement s’exécute correctement.
- Déployez l’application sur IIS sur votre ordinateur de développement à l’aide du même processus que celui que vous utiliserez ultérieurement pour la déployer dans votre environnement de production. Cette méthode valide votre processus de déploiement en plus de valider que votre application s’exécutera correctement sous IIS.
- Déployez l’application dans un environnement de test aussi proche que possible de votre environnement de production. Étant donné que l’environnement de production de ces tutoriels est un fournisseur d’hébergement tiers, l’environnement de test idéal serait un deuxième compte auprès du fournisseur d’hébergement. Vous utiliseriez ce deuxième compte uniquement pour le test, mais il serait configuré de la même manière que le compte de production.
Ce tutoriel montre les étapes de l’option 2. Des conseils pour l’option 3 sont fournis à la fin du didacticiel Déploiement dans l’environnement de production . À la fin de ce didacticiel, des liens vers des ressources pour l’option 1 sont disponibles.
Rappel : si vous recevez un message d’erreur ou si un élément ne fonctionne pas pendant le tutoriel, veillez à case activée la page de résolution des problèmes.
Configuration de l’application pour qu’elle s’exécute dans un niveau de confiance moyen
Avant d’installer IIS et de le déployer sur celui-ci, vous allez modifier un paramètre de fichier Web.config afin de rendre le site plus exécuté comme il le fera dans un environnement d’hébergement partagé classique.
Les fournisseurs d’hébergement exécutent généralement votre site web en confiance moyenne, ce qui signifie qu’il n’est pas autorisé à faire certaines choses. Par exemple, le code d’application ne peut pas accéder au Registre Windows et ne peut pas lire ou écrire des fichiers qui se trouvent en dehors de la hiérarchie de dossiers de votre application. Par défaut, votre application s’exécute avec un niveau de confiance élevé sur votre ordinateur local, ce qui signifie que l’application peut être en mesure d’effectuer des opérations qui échouent lorsque vous la déployez en production. Par conséquent, pour que l’environnement de test reflète plus précisément l’environnement de production, vous allez configurer l’application pour qu’elle s’exécute en confiance moyenne.
Dans le fichier Web.config d’application, ajoutez un élément d’approbation à l’élément system.web , comme illustré dans cet exemple.
<configuration>
<!-- Settings -->
<system.web>
<trust level="Medium" />
<!-- Settings -->
</system.web>
</configuration>
L’application s’exécute désormais en confiance moyenne dans IIS, même sur votre ordinateur local. Ce paramètre vous permet d’intercepter le plus tôt possible toutes les tentatives du code d’application pour faire quelque chose qui échouerait en production.
Notes
Si vous utilisez Migrations Entity Framework Code First, vérifiez que la version 5.0 ou ultérieure est installée. Dans Entity Framework version 4.3, les migrations nécessitent une approbation totale pour mettre à jour le schéma de base de données.
Installation d’IIS et web Deploy
Pour effectuer un déploiement sur IIS sur votre ordinateur de développement, iis et Web Deploy doivent être installés. Ceux-ci ne sont pas inclus dans la configuration par défaut de Windows 7. Si vous avez déjà installé IIS et Web Deploy, passez à la section suivante.
L’utilisation du programme d’installation de plateforme web est la méthode recommandée pour installer IIS et Web Deploy, car le programme d’installation de plateforme web installe une configuration recommandée pour IIS et installe automatiquement les prérequis pour IIS et Web Deploy si nécessaire.
Pour exécuter web Platform Installer afin d’installer IIS et Web Deploy, utilisez le lien suivant. Si vous avez déjà installé IIS, Web Deploy ou l’un de leurs composants requis, le programme d’installation de plateforme web installe uniquement ce qui manque.
Définition du pool d’applications par défaut sur .NET 4
Après avoir installé IIS, exécutez le Gestionnaire des services Internet pour vous assurer que le .NET Framework version 4 est affecté au pool d’applications par défaut.
Dans le menu Démarrer de Windows, sélectionnez Exécuter, entrez « inetmgr », puis cliquez sur OK. (Si la commande Exécuter ne se trouve pas dans votre menu Démarrer , vous pouvez appuyer sur les touches Windows et R pour l’ouvrir. Ou cliquez avec le bouton droit sur la barre des tâches, cliquez sur Propriétés, sélectionnez l’onglet Menu Démarrer , cliquez sur Personnaliser, puis sélectionnez Exécuter la commande.)
Dans le volet Connections, développez le nœud de serveur, puis sélectionnez Pools d’applications. Dans le volet Pools d’applications , si DefaultAppPool est affecté au .NET Framework version 4 comme dans l’illustration suivante, passez à la section suivante.
Si seuls deux pools d’applications sont définis sur .NET Framework 2.0, vous devez installer ASP.NET 4 dans IIS :
Ouvrez une fenêtre d’invite de commandes en cliquant avec le bouton droit sur Invite de commandes dans le menu Démarrer de Windows et en sélectionnant Exécuter en tant qu’administrateur. Exécutez ensuite aspnet_regiis.exe pour installer ASP.NET 4 dans IIS, à l’aide des commandes suivantes. (Dans les systèmes 64 bits, remplacez « Framework » par « Framework64 ».)
cd %windir%\Microsoft.NET\Framework\v4.0.30319 aspnet_regiis.exe –iru
Cette commande crée de nouveaux pools d’applications pour .NET Framework 4, mais le pool d’applications par défaut est toujours défini sur 2.0. Vous allez déployer une application qui cible .NET 4 dans ce pool d’applications. Vous devez donc remplacer le pool d’applications par .NET 4.
Si vous avez fermé le Gestionnaire des services Internet, réexécutez-le, développez le nœud serveur, puis cliquez sur Pools d’applications pour afficher à nouveau le volet Pools d’applications .
Dans le volet Pools d’applications , cliquez sur DefaultAppPool, puis dans le volet Actions , cliquez sur Paramètres de base.
Dans la boîte de dialogue Modifier le pool d’applications, remplacezla version de .NET Framework par .NET Framework v4.0.30319 , puis cliquez sur OK.
Vous êtes maintenant prêt à publier sur IIS.
Publication sur IIS
Il existe plusieurs façons de déployer à l’aide de Visual Studio 2010 et Web Deploy :
- Utilisez La publication en un clic de Visual Studio.
- Créez un package de déploiement et installez-le à l’aide de l’interface utilisateur du Gestionnaire des services Internet. Le package de déploiement se compose d’un fichier .zip qui contient tous les fichiers et métadonnées nécessaires pour installer un site dans IIS.
- Créez un package de déploiement et installez-le à l’aide de la ligne de commande.
Le processus que vous avez suivi dans les didacticiels précédents pour configurer Visual Studio afin d’automatiser les tâches de déploiement s’applique à ces trois méthodes. Dans ces tutoriels, vous allez utiliser la première de ces méthodes. Pour plus d’informations sur l’utilisation des packages de déploiement, consultez ASP.NET mappage de contenu de déploiement.
Avant de publier, vérifiez que vous exécutez Visual Studio en mode administrateur. (Dans le menu Démarrer de Windows 7, cliquez avec le bouton droit sur l’icône correspondant à la version de Visual Studio que vous utilisez, puis sélectionnez Exécuter en tant qu’administrateur.) Le mode Administrateur est requis pour la publication uniquement lorsque vous publiez sur IIS sur l’ordinateur local.
Dans Explorateur de solutions, cliquez avec le bouton droit sur le projet ContosoUniversity (et non sur le projet ContosoUniversity.DAL), puis sélectionnez Publier.
L'Assistant Publier le site Web s'ouvre.
Dans la liste déroulante, sélectionnez <Nouveau...>.
Dans la boîte de dialogue Nouveau profil , entrez « Test », puis cliquez sur OK.
Ce nom est identique au nœud central du fichier de transformation Web.Test.config que vous avez créé précédemment. Cette correspondance est à l’origine de l’application des transformations Web.Test.config lorsque vous publiez à l’aide de ce profil.
L’Assistant passe automatiquement à l’onglet Connexion .
Dans la zone URL du service , entrez localhost.
Dans la zone Site/application , entrez Site web par défaut/ContosoUniversity.
Dans la zone URL de destination , entrez http://localhost/ContosoUniversity
.
Le paramètre URL de destination n’est pas obligatoire. Lorsque Visual Studio termine le déploiement de l’application, votre navigateur par défaut s’ouvre automatiquement sur cette URL. Si vous ne souhaitez pas que le navigateur s’ouvre automatiquement après le déploiement, laissez cette zone vide.
Cliquez sur Valider la connexion pour vérifier que les paramètres sont corrects et que vous pouvez vous connecter à IIS sur l’ordinateur local.
Une marque case activée verte vérifie que la connexion a réussi.
Cliquez sur Suivant pour passer à l’onglet Paramètres .
La zone de liste déroulante Configuration spécifie la configuration de build à déployer. La valeur par défaut est Release, ce que vous souhaitez.
Laissez la zone Supprimer les fichiers supplémentaires à la case activée de destination désactivée. Étant donné qu’il s’agit de votre premier déploiement, il n’y aura pas encore de fichiers dans le dossier de destination.
Dans la section Bases de données, entrez la valeur suivante dans la zone chaîne de connexion pour SchoolContext :
Data Source=|DataDirectory|School-Prod.sdf
Le processus de déploiement place cette chaîne de connexion dans le fichier de Web.config déployé, car l’option Utiliser cette chaîne de connexion au moment de l’exécution est sélectionnée.
Également sous SchoolContext, sélectionnez Appliquer Migrations Code First. Avec cette option, le processus de déploiement configure le fichier de Web.config déployé pour spécifier l’initialiseur MigrateDatabaseToLatestVersion
. Cet initialiseur met automatiquement à jour la base de données vers la dernière version lorsque l’application accède à la base de données pour la première fois après le déploiement.
Dans la zone chaîne de connexion pour DefaultConnection, entrez la valeur suivante :
Data Source=|DataDirectory|aspnet-Prod.sdf
Laissez La mise à jour de la base de données désactivée. La base de données d’appartenance sera déployée en copiant le fichier .sdf dans App_Data, et vous ne souhaitez pas que le processus de déploiement fasse autre chose avec cette base de données.
Cliquez sur Suivant pour passer à l’onglet Aperçu .
Sous l’onglet Aperçu , cliquez sur Démarrer l’aperçu pour afficher la liste des fichiers qui seront copiés.
Cliquez sur Publier.
Si Visual Studio n’est pas en mode administrateur, vous pouvez recevoir un message d’erreur indiquant une erreur d’autorisation. Dans ce cas, fermez Visual Studio, ouvrez-le en mode administrateur et réessayez de publier.
Si Visual Studio est en mode administrateur, la fenêtre Sortie signale la génération et la publication réussies.
Le navigateur s’ouvre automatiquement sur la page d’accueil de Contoso University s’exécutant dans IIS sur l’ordinateur local.
Test dans l’environnement de test
Notez que l’indicateur d’environnement indique « (Test) » au lieu de « (Dev) », ce qui indique que la transformation Web.config pour l’indicateur d’environnement a réussi.
Exécutez la page Étudiants pour vérifier que la base de données déployée n’a pas d’étudiants. Lorsque vous sélectionnez cette page, le chargement peut prendre quelques minutes, car Code First crée la base de données, puis exécute la Seed
méthode . (Cela n’a pas été fait lorsque vous étiez sur la page d’accueil, car l’application n’a pas encore essayé d’accéder à la base de données.)
Exécutez la page Instructeurs pour vérifier que Code First a amorcé la base de données avec les données de l’instructeur :
Sélectionnez Ajouter des étudiants dans le menu Étudiants , ajoutez un étudiant, puis affichez le nouvel étudiant dans la page Étudiants pour vérifier que vous pouvez écrire correctement dans la base de données :
Dans le menu Cours , sélectionnez Mettre à jour les crédits. La page Mettre à jour les crédits nécessite des autorisations d’administrateur, de sorte que la page Connexion s’affiche. Entrez les informations d’identification du compte administrateur que vous avez créées précédemment (« admin » et « Pas$w0rd »). La page Mettre à jour les crédits s’affiche, qui vérifie que le compte d’administrateur que vous avez créé dans le didacticiel précédent a été correctement déployé dans l’environnement de test.
Vérifiez qu’un dossier Elmah existe avec uniquement le fichier d’espace réservé qu’il contient.
Examen des modifications de Web.config automatiques pour Migrations Code First
Ouvrez le fichier Web.config dans l’application déployée à l’adresse C :\inetpub\wwwroot\ContosoUniversity. Vous pouvez voir où le processus de déploiement configuré Migrations Code First pour mettre automatiquement à jour la base de données vers la dernière version.
Le processus de déploiement a également créé une nouvelle chaîne de connexion que Migrations Code First utiliser exclusivement pour mettre à jour le schéma de base de données :
Cette chaîne de connexion supplémentaire vous permet de spécifier un compte d’utilisateur pour les mises à jour du schéma de base de données et un autre compte d’utilisateur pour l’accès aux données d’application. Par exemple, vous pouvez attribuer le rôle db_owner à Migrations Code First et db_datareader et db_datawriter rôles à l’application. Il s’agit d’un modèle de défense en profondeur courant qui empêche le code potentiellement malveillant dans l’application de modifier le schéma de base de données. (Par exemple, cela peut se produire lors d’une attaque par injection SQL réussie.) Ce modèle n’est pas utilisé par ces tutoriels. Il ne s’applique pas à SQL Server Compact, ni à la migration vers SQL Server dans un didacticiel ultérieur de cette série. Le site Cytanium ne propose qu’un seul compte d’utilisateur pour accéder à la base de données SQL Server que vous créez sur Cytanium. Si vous êtes en mesure d’implémenter ce modèle dans votre scénario, vous pouvez le faire en effectuant les étapes suivantes :
- Sous l’onglet Paramètres de l’Assistant Publication web, entrez le chaîne de connexion qui spécifie un utilisateur disposant des autorisations complètes de mise à jour du schéma de base de données, puis désactivez la zone Utiliser cette chaîne de connexion au moment de l’exécution case activée. Dans le fichier Web.config déployé, cela devient le
DatabasePublish
chaîne de connexion. - Créez une transformation de fichier Web.config pour le chaîne de connexion que vous souhaitez que l’application utilise au moment de l’exécution.
Vous avez maintenant déployé votre application sur IIS sur votre ordinateur de développement et l’avez testée ici. Cela vérifie que le processus de déploiement a copié le contenu de l’application à l’emplacement approprié (à l’exclusion des fichiers que vous ne souhaitez pas déployer) et que Web Deploy a correctement configuré IIS pendant le déploiement. Dans le tutoriel suivant, vous allez exécuter un autre test qui recherche une tâche de déploiement qui n’a pas encore été effectuée : la définition des autorisations de dossier sur le dossier Elmah .
Informations complémentaires
Pour plus d’informations sur l’exécution d’IIS ou de IIS Express dans Visual Studio, consultez les ressources suivantes :
- IIS Express Vue d’ensemble sur le site IIS.net.
- Présentation de IIS Express sur le blog de Scott Guthrie.
- Guide pratique pour spécifier le serveur web pour les projets web dans Visual Studio.
- Principales différences entre IIS et le serveur de développement ASP.NET sur le site ASP.NET.
- Testez votre ASP.NET MVC ou Web Forms Application sur IIS 7 en 30 secondes sur le blog de Rick Anderson. Cette entrée fournit des exemples expliquant pourquoi les tests avec Le serveur de développement Visual Studio (Cassini) n’sont pas aussi fiables que les tests dans IIS Express, et pourquoi les tests dans IIS Express ne sont pas aussi fiables que les tests dans IIS.