déploiement web ASP.NET à l’aide de Visual Studio : Définition des autorisations de dossier
par Tom Dykstra
Télécharger le projet de démarrage
Cette série de tutoriels vous montre comment déployer (publier) une application web ASP.NET sur Azure App Service Web Apps ou sur un fournisseur d’hébergement tiers, à l’aide de Visual Studio 2012 ou Visual Studio 2010. Pour plus d’informations sur la série, consultez le premier tutoriel de la série.
Vue d’ensemble
Dans ce tutoriel, vous définissez les autorisations de dossier pour le dossier Elmah dans le site web déployé afin que l’application puisse créer des fichiers journaux dans ce dossier.
Lorsque vous testez une application web dans Visual Studio à l’aide du serveur de développement Visual Studio (Cassini) ou IIS Express, l’application s’exécute sous votre identité. Vous êtes probablement un administrateur sur votre ordinateur de développement et avez toute autorité pour faire quoi que ce soit à n’importe quel fichier dans n’importe quel dossier. Toutefois, lorsqu’une application s’exécute sous IIS, elle s’exécute sous l’identité définie pour le pool d’applications auquel le site est affecté. Il s’agit généralement d’un compte défini par le système qui dispose d’autorisations limitées. Par défaut, il dispose d’autorisations de lecture et d’exécution sur les fichiers et dossiers de votre application web, mais il n’a pas d’accès en écriture.
Cela devient un problème si votre application crée ou met à jour des fichiers, ce qui est un besoin courant dans les applications web. Dans l’application Contoso University, Elmah crée des fichiers XML dans le dossier Elmah afin d’enregistrer des détails sur les erreurs. Même si vous n’utilisez pas quelque chose comme Elmah, votre site peut permettre aux utilisateurs de charger des fichiers ou d’effectuer d’autres tâches qui écrivent des données dans un dossier de votre site.
Rappel : si vous obtenez un message d’erreur ou si quelque chose ne fonctionne pas pendant le didacticiel, veillez à case activée la page de résolution des problèmes.
Tester la journalisation des erreurs et la création de rapports
Pour voir comment l’application ne fonctionne pas correctement dans IIS (bien qu’elle l’ait été quand vous l’avez testée dans Visual Studio), vous pouvez provoquer une erreur qui serait normalement journalisée par Elmah, puis ouvrir le journal des erreurs Elmah pour afficher les détails. Si Elmah n’a pas pu créer un fichier XML et stocker les détails de l’erreur, un rapport d’erreurs vide s’affiche.
Ouvrez un navigateur et accédez à http://localhost/ContosoUniversity
, puis demandez une URL non valide comme Studentsxxx.aspx. Vous voyez une page d’erreur générée par le système au lieu de la page GenericErrorPage.aspx , car le customErrors
paramètre dans le fichier Web.config est « RemoteOnly » et vous exécutez IIS localement :
À présent, exécutez Elmah.axd pour afficher le rapport d’erreurs. Une fois que vous vous êtes connecté avec les informations d’identification du compte administrateur (« admin » et « devpwd »), une page de journal des erreurs vide s’affiche, car Elmah n’a pas pu créer un fichier XML dans le dossier Elmah :
Définir l’autorisation d’écriture sur le dossier Elmah
Vous pouvez définir les autorisations de dossier manuellement ou en faire une partie automatique du processus de déploiement. La rendre automatique nécessite du code MSBuild complexe, et étant donné que vous n’avez à le faire que la première fois que vous déployez, les étapes suivantes expliquent comment le faire manuellement. (Pour plus d’informations sur la façon d’effectuer cette partie du processus de déploiement, consultez Définition des autorisations de dossier sur la publication web sur le blog de Sayed Hashimi.)
Dans Explorateur de fichiers, accédez à C:\inetpub\wwwroot\ContosoUniversity. Cliquez avec le bouton droit sur le dossier Elmah , sélectionnez Propriétés, puis sélectionnez l’onglet Sécurité .
Cliquez sur Modifier.
Dans la boîte de dialogue Autorisations pour Elmah, sélectionnez DefaultAppPool, puis sélectionnez la zone Écrire case activée dans la colonne Autoriser.
(Si vous ne voyez pas DefaultAppPool dans la liste des noms de groupes ou d’utilisateurs , vous avez probablement utilisé une autre méthode que celle spécifiée dans ce didacticiel pour configurer IIS et ASP.NET 4 sur votre ordinateur. Dans ce cas, déterminez quelle identité est utilisée par le pool d’applications affecté à l’application Contoso University et accordez l’autorisation d’écriture à cette identité. Consultez les liens sur les identités de pool d’applications à la fin de ce tutoriel.) Cliquez sur OK dans les deux boîtes de dialogue.
Retester la journalisation et la création de rapports d’erreurs
Testez en provoquant à nouveau une erreur de la même façon (demander une URL incorrecte) et exécutez la page Journal des erreurs . Cette fois, l’erreur s’affiche sur la page.
Résumé
Vous avez maintenant effectué toutes les tâches nécessaires pour que Contoso University fonctionne correctement dans IIS sur votre ordinateur local. Dans le tutoriel suivant, vous allez rendre le site disponible publiquement en le déployant sur Azure.
Plus d’informations
Dans cet exemple, la raison pour laquelle Elmah n’a pas pu enregistrer les fichiers journaux était assez évidente. Vous pouvez utiliser le suivi IIS dans les cas où la cause du problème n’est pas si évidente ; Consultez Résolution des problèmes liés aux demandes ayant échoué à l’aide du suivi dans IIS 7 sur le site IIS.net.
Pour plus d’informations sur l’octroi d’autorisations aux identités de pool d’applications, consultez Identités de pool d’applications et Contenu sécurisé dans IIS via des listes de contrôle d’accès de système de fichiers sur le site IIS.net.