Impossible d'accéder à la page demandée car les données de configuration associées à la page ne sont pas valides

480

Je souhaite télécharger mon propre site Web asp.net sur IIS avec IIS Manager. Mais quand je fais cela, j'obtiens l'erreur suivante

Erreur HTTP 500.19 - Erreur de serveur interne La page demandée n'est pas accessible car les données de configuration associées pour la page ne sont pas valides

Module IIS Web Core
Notification
Gestionnaire inconnu Pas encore déterminé
Erreur Code 0x80070005
Erreur de configuration Impossible de lire le fichier de configuration en raison d'autorisations insuffisantes
Fichier de configuration \\?\C:\Users\Yasso\Documents\Visual Studio 2008\WebSites\WebSite5\web.config

J'ai cherché plusieurs fois une solution à cette erreur, mais aucune des solutions n'a résolu l'erreur.

J'ai un problème avec mon IUSRcompte. Je ne vois pas ce compte dans le "nom de groupe ou d'utilisateur" dans les propriétés du web.config.

Quel est le problème?

Yasmeen
la source
3
J'ai eu ce problème après avoir annulé certains changements via Subversion (bien que cela puisse être une coïncidence). J'ai remarqué que les Web.configACL du fichier étaient différentes des autres fichiers du répertoire et qu'il n'héritait pas de son parent . J'ai activé l'héritage ACL et tout est revenu à la normale.
ta.speot.is
1
Ma solution était légèrement différente. Sur certaines machines Windows Server 2008, vous devez donner accès au groupe "IIS_IUSRS", pas à l'utilisateur "IUSR" - dans les autorisations de sécurité du dossier de site. Assurez-vous d'aller à l'emplacement de votre machine.
MacGyver
7
J'ai eu ce problème lors du déplacement d'un site vers un serveur sur lequel le module IIS Url Rewrite n'était pas installé.
ScottE
1
Cela peut se produire SI vous avez renommé votre serveur. Je l'ai fait pour moi-même - et j'ai finalement dû simplement entrer (Windows Server 2012 R2) et ajouter à nouveau IIS APPPOOL \ SiteName ... et que 100% a corrigé cela.
Michael K. Campbell
2
si vous êtes nouveau dans le déploiement d'applications ASP.NET Core sur votre ancien serveur 2008 R2, vous devez installer le bundle d'hébergement de serveur Windows .NET Core - comme je l'ai appris à cette réponse
bkwdesign

Réponses:

178

Le message indique que votre fichier de configuration est corrompu d'une manière ou d'une autre. Cependant, il indique également qu'il ne peut pas réellement accéder au fichier de configuration. J'ignorerais donc le message d'origine sur la corruption / le manque de validité car il s'agit très probablement de l'effet de ne pas pouvoir lire le fichier en raison d'un manque d'autorisation.

La raison pour laquelle il ne peut pas lire le fichier de configuration est que le processus exécutant votre application Web n'est pas autorisé à accéder au fichier / répertoire. Vous devez donc donner au processus exécutant votre application Web ces autorisations.

Les droits d'accès doivent être assez simples, c'est-à-dire au moins en lecture et, selon votre application, en écriture .

Ci-dessus, vous mentionnez que l' IUSR, etc. ne fait pas partie des propriétés de web.config. Si vous entendez par là que l' IUSR n'est pas répertorié dans l'onglet de sécurité du fichier, c'est une bonne chose. On ne veut pas donner à IUSR une quelconque autorisation sur web.config . Le rôle IUSR est un utilisateur Internet anonyme.

Le fichier web.config doit seulement être accessible par votre application.

Le problème est que vous n'avez pas dit quelle version de système d'exploitation et IIS vous utilisez, il est donc difficile de conseiller les étapes à suivre.

C'est-à-dire dans IIS 7.5, le message d'erreur que vous citez est susceptible de se produire car votre ApplicationPoolIdentity ne se voit pas attribuer les autorisations. Votre application Web appartient à un pool d'applications et vous devez donc accorder les autorisations au compte de système d'exploitation sous lequel le pool d'applications de votre application Web s'exécute. Il s'agit souvent de quelque chose comme NetworkService, mais vous pouvez l'avoir personnalisé pour qu'il s'exécute sous un compte spécialement conçu. Sans plus d'informations, il est difficile de vous aider.

intermension
la source
3
Puis-je donner cette autorisation par programme? Veuillez aider. J'ai le même problème.
pcbabu
1
Merci, cela a également résolu mon problème. J'utilise l'emprunt d'identité, ce qui rend apparemment nécessaire d'attribuer des autorisations de lecture au répertoire de l'application pour le compte emprunté.
Cesar
2
Je reçois toujours "Échec de l'énumération des objets dans le conteneur. L'accès est refusé." après je donne la permission
RollRoll
4
Cliquez avec le bouton droit sur le dossier auquel vous devez accorder une autorisation de sécurité. Il s'agit du dossier racine dans lequel votre application est publiée et du même dossier que le chemin physique de votre site Web IIS. Choisissez les propriétés dans le menu contextuel et cliquez sur l'onglet Sécurité. Modifiez les utilisateurs, puis ajoutez un utilisateur. Cliquez sur le bouton Emplacements et choisissez l'icône du haut (ressemble à Poste de travail). Dans la zone de texte, entrez IIS_IUSRS. Appuyez plusieurs fois sur OK jusqu'à ce que tous les menus contextuels soient fermés. Redémarrez votre site Web et accédez-y à nouveau.
Jeremy Ray Brown
Si vous ne voulez pas comprendre les autorisations sur le chemin physique du site Web, donnez-en la permission à tout le monde! C'est un hack rapide et non recommandé pour tous les accès physiques aux fichiers / dossiers.
Jeremy Ray Brown
662

Cela peut également se produire si le site est configuré pour utiliser le module de réécriture d'URL IIS mais qu'il n'est pas installé.

bkaid
la source
C'était tout pour moi. Suppression de la section de réécriture (qui n'était pas vraiment nécessaire de toute façon) et tout va bien.
Andrew Patterson
129
Bien joué. <rant> Ce serait bien si IIS lançait une erreur "Je ne comprends pas ce qu'est <rewrite>", plutôt que de se plaindre d'un XML mal formé. </rant>
Evan Haas
7
Merci beaucoup - c'était aussi mon problème. Le module de réécriture est utilisé si vous voyez la balise <rewrite>. On pourrait penser que IIS pourrait vous dire ce qui ne peut pas être analysé.
scolestock
6
Belle façon facile de résoudre la dépendance manquante sur la ligne de commande; webpicmd / Install / Produits: UrlRewrite2
cirrus
2
Je voudrais juste noter que si votre web.config comprend une balise <rewrite>, alors vous avez besoin du module de réécriture.
Jono
437

Enfin , j'ai trouvé la solution à mon problème. Le compte ASP.net n'apparaissait pas dans le gestionnaire IIS, car je n'ai pas coché sa case dans IIS. Pour ce faire dans Windows 7, suivez les étapes:

  1. Panneau de contrôle ouvert
  2. Cliquez sur le lien «programme» (pas désinstaller les programmes)
  3. Cliquez sur le lien «activer / désactiver les fonctionnalités de Windows»
  4. Localisez «Internet Information services IIS» dans la fenêtre contextuelle et développez son nœud
  5. Développez le nœud «World Wide Web Service»
  6. Développez le nœud «Fonctionnalités de développement d'applications»
  7. Cochez la case «ASP.NET»
  8. Cliquez ensuite sur le bouton ok

Maintenant, vous verrez le compte ASP.net sur le gestionnaire IIS et par défaut, vous verrez le compte IIS. Maintenant, vous devez déplacer votre site Web ASP.net de «mon document» vers un autre endroit où IIS est autorisé à y accéder (c'est-à-dire vers une autre partition sur votre ordinateur). Maintenant, parcourez votre site Web à partir du gestionnaire IIS et cela devrait fonctionner.

Merci beaucoup à Jeff Turner pour la solution.

Yasmeen
la source
Quelqu'un doit avoir supprimé ce service de rôle d'un serveur qui fonctionnait depuis des mois. Je n'aurais jamais deviné vérifier cela. Pouah.
SixOThree
Encore plus facile, en utilisant la ligne de commande:dism /NoRestart /Online /Enable-Feature /FeatureName:IIS-ASPNET
i3arnon
1
Merci ... comment peuvent-ils lancer un produit avec un si faible niveau de messages d'erreur?
Vland
Ma section <handlers> avait une référence à WebDAV et une fois que j'ai ajouté la fonctionnalité WebDAV à IIS, cela a fonctionné.
Andy Roberts
55

Dans mon cas, l'installation du module IIS URL Rewrite a résolu le problème.

Salim
la source
c'est moi me rappelant la prochaine fois que c'est ce qui l'a fixé pour moi. quelle horrible erreur: - /
Simon_Weaver
C'est la même chose que la réponse la plus votée .
Michael - Où est Clay Shirky le
47

J'avais le même problème, voici la solution qui a fonctionné pour moi.

  1. Gestionnaire IIS
  2. Clic droit sur ce site Web
  3. Modifier les autorisations
  4. Utilisateur "IIS_IUSRS" ajouté dans l'onglet Sécurité
  5. A accordé des autorisations complètes à l'utilisateur «IIS_IUSRS»
  6. Définissez l'identité du pool d'applications sur «ApplicationPoolIdentity»
Sukhdevsinh Zala
la source
2
Je ne recommanderais pas cela à des fins de production. Je crois que IIS_IUSRS est un compte anonyme et vous lui donneriez un accès complet à toute la structure de répertoires du site Web
Jacques
J'ai aussi sauvé ma journée, car j'ai compris que la permission était aussi le coupable. J'ai utilisé une autre identité apppool et cela a fonctionné!
Près du
39

Pour les développeurs Visual Studio (VS): comme l'ont laissé entendre Harvey Darvey, Savage et Snives, votre configuration d'hôte d'application peut pointer vers le mauvais chemin physique d'application. Recherchez virtualDirectory dans /.vs/config/applicationhost.config pour modifier le chemin d' accès physique s'il est incorrect.

entrez la description de l'image ici

Assurez-vous que le chemin physique est correct:

entrez la description de l'image ici

Michael
la source
3
Vous pouvez également faire exactement la même chose dans project => properties => project url => créer un répertoire virtuel, choisissez oui pour remapper sur le chemin physique correct lorsque vous y
êtes
Dans mon cas, c'était un peu différent mais cela m'a donné une direction, merci beaucoup, ça m'a beaucoup aidé :)
Bharat
24

Alerte Facepalm:

Vous obtiendrez également cette erreur si le chemin d'accès au fichier de configuration est incorrect. Revérifiez-le pour vous assurer que le chemin physique est correctement saisi dans IIS.

Jon Crowell
la source
En variante, il s'avère que j'ai mal défini le chemin vers le site lui-même. J'ai accidentellement parcouru le partage réseau mappé au lieu du chemin du fichier système local.
David
2
Eu le même moment face-paume. J'ai déplacé mon site Web vers un sous-dossier et j'ai pensé que j'avais correctement tapé le nouveau chemin dans IIS. Le site semblait toujours avoir tous les dossiers requis, etc. en dessous, dans l'arborescence dans IIS, il n'a donc pas déclenché cela comme étant la raison. J'ai réinitialisé les autorisations, etc., je ne l'ai pas résolu. Ensuite, en discutant du problème, il m'a été suggéré en passant ... et j'ai maintenant un site de travail après 1 heure de temps perdu!
ladygargar
Où est ce chemin défini? Cela semble être mon problème mais je ne trouve pas ce que je dois changer
Drew Rochon
Dans l'environnement de développement: .vs> config> applicationhost.config C'est ce qui se produit lorsque vous n'avez pas un GIT ignoré sur le fichier et que les développeurs commencent à l'archiver.
Savage
J'avais une barre oblique "\" supplémentaire sur mon chemin physique - shesh. Merci pour cela
J King
18

Vous devez attribuer des autorisations pour IIS_IUSRS sur la machine locale (mais vous n'avez pas à attribuer pour IUSR, en fait, cela fonctionnera même si vous refusez explicitement les autorisations).

Pour attribuer des autorisations, faites simplement un clic droit sur le dossier et sur l'onglet sécurité, assurez-vous d'accorder les autorisations appropriées, et si l'utilisateur n'est pas répertorié, cliquez sur "AJOUTER", et entrez IIS_IUSRS (et assurez-vous que sous "domaine" le local ordinateur est sélectionné, ou entrez dans le champ de nom YourLocalComputerName \ IIS_IUSRS), puis vous êtes prêt à partir.

Si vous le souhaitez, vous pouvez au lieu d'attribuer des autorisations au groupe IIS_IUSRS, vous pouvez plutôt attribuer au pool d'applications, qui devrait en général être "IIS APPPOOL \ nom du pool d'applications ".

yoel halb
la source
Depuis le site Web suivant: iis.net/learn/get-started/planning-for-security/… Le groupe IIS_IUSRS remplace le groupe IIS_WPG. Ce groupe intégré a accès à toutes les ressources de fichiers et de système nécessaires pour qu'un compte, lorsqu'il est ajouté à ce groupe, puisse agir en toute transparence en tant qu'identité de pool d'applications.
Jeremy Ray Brown
Accès toujours refusé.
GreySage
15

Juste pour intégrer, j'ai reçu le même genre d'erreur et mon problème était assez simple: je manquais le pack d'hébergement .NET Core. Une fois que j'ai installé l'outil et redémarré le serveur, ça allait.

Vous pouvez trouver le manuel pour héberger le noyau asp.net sur Windows ici: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2

JS_Diver
la source
L'installation du SDK .NET Core ne suffit pas pour exécuter vos sites Web ASP.NET Core sous IIS. J'ai passé plusieurs heures à
résoudre
Ce n'est peut-être pas suffisant, mais cela résout cette erreur. A travaillé pour moi. J'avais supposé que tous les composants .NET étaient déjà inclus.
pcalkins
Oui, j'ai
Kirk Woll le
Ok, le package "autonome" n'est pas à la hauteur de son titre.
SLCH000
11

La même chose s'est produite avec moi, essayez de vérifier cela en double-cliquant sur les chaînes de connexion dans le volet droit d'IIS 7 lorsque vous sélectionnez un site Web.

Cela vous donnera une erreur (qu'il y a un problème avec le fichier de configuration Web), car vous avez utilisé des règles de réécriture d'URL et le composant respectif n'est pas installé.

Installez «Microsoft URL Rewrite Module 2.0 for IIS 7» et cela devrait résoudre votre problème

Tanuj Gulati
la source
9

Rien ici ne fonctionnait pour moi, j'ai trouvé cette commande dans une autre réponse SO et cela a résolu mon problème. Il suffit de lancer l'invite de commandes en tant qu'administrateur et d'exécuter cette commande:

run->cmd

run "c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i"

Crédits: User Vicxx

Celte
la source
Pour corriger mon environnement de développement vs 2017, j'ai dû supprimer IIS de mes fonctionnalités Windows 7. Ajoutez-le en arrière, mettez à jour et installez tout ce dont vous avez besoin. La dernière étape consistait à exécuter les regiis à partir de l'invite de commande de visual studio 2017. Maintenant, tout fonctionne à nouveau, 8 heures de temps passées à résoudre ce problème. uck ..
Warren LaFrance
7

Je fais ces étapes pour résoudre ce problème dans Windows Server 2012, IIS 8.5. Devrait également fonctionner pour d'autres versions.

  1. Accédez au gestionnaire de serveur, cliquez sur ajouter des rôles et des fonctionnalités
  2. Dans la section des rôles, choisissez: Web Server
  3. Sous la sous-section Sécurité, choisissez tout (j'ai exclu le résumé, les restrictions IP et l'autorisation d'URL car nous ne les utilisons pas)
  4. Sous Développement d'applications, choisissez .NET Extensibility 4.5, ASP.NET 4.5et les deux ISAPIentrées
  5. Dans la section caractéristiques choisissez: NET 3.5, .NET 4.5,ASP.NET 4.5
  6. Dans la section du serveur Web, choisissez: Web Server(tout), Management Tools(IIS Management Console et Management Service), Windows
Sanbuur Dahir Hersi
la source
6

Une autre possibilité qui a résolu ce problème pour moi:

IIS -> Modifier les autorisations -> onglet Sécurité -> Accorder aux utilisateurs les autorisations appropriées (ou IIS_IUSRS, selon votre configuration)

valen
la source
6

Ehm. J'avais déplacé mon site / fichiers vers un dossier différent. Sans changer le chemin dans le site Web IIS.

Vous pouvez tous rire maintenant.

Frederik Struck-Schøning
la source
6

Assurez-vous que le pool d'applications est défini sur la version correcte du framework. Vous devrez également vous assurer que vos utilisateurs aspnet, IIS_IUSRS ou IUSR ont un accès en lecture au répertoire de l'application.

Jeff Turner
la source
Comment puis-je faire ceci?? "assurez-vous que vos utilisateurs aspnet ou IUSR ont un accès en lecture au répertoire de l'application"
Yasmeen
5
accédez à C: \ Users \ Yasso \ Documents \ Visual Studio 2008 \ WebSites \ WebSite5 \ et assurez-vous que le répertoire WebSite5 dispose des autorisations de lecture pour le groupe IUSR et IIS_IUSRS. Pour ce faire, cliquez avec le bouton droit sur le répertoire et sélectionnez les propriétés, puis accédez à l'onglet Sécurité.
Jeff Turner
Mais je ne vois pas le groupe IUSR et IIS_IUSRS dans le groupe ou le nom d'utilisateur !! je ne sais pas quel est le problème ??
Yasmeen
1
voyez-vous une option pour le service réseau? par défaut, c'est ce que le pool d'applications utilisera lorsque vous travaillez sur votre bureau (si je me souviens bien)
Jeff Turner
1
lorsque vous accédez à l'onglet sécurité, après avoir cliqué avec le bouton droit sur le dossier et les propriétés sélectionnées. Cliquez sur le bouton "Ajouter", qui devrait faire apparaître une autre fenêtre avec un bouton "Modifier". Cliquez sur le bouton "Modifier" et tapez "Service réseau" dans la zone de texte. Il devrait trouver l'utilisateur et l'ajouter à la liste. Assurez-vous ensuite que l'utilisateur dispose au minimum des privilèges de lecture.
Jeff Turner
4

Cela m'est également arrivé lorsque j'avais un document par défaut du même nom (comme index.aspx) spécifié dans mon fichier web.config ET mon site Web IIS. J'ai fini par supprimer l'entrée du site Web IIS et j'ai conservé l'entrée web.config comme ci-dessous:

<system.webServer>
  <defaultDocument>
    <files>
      <add value="index.aspx" />
    </files>
  </defaultDocument>...
theJerm
la source
4

Parfois, ce message contient des composants manquants dans votre environnement IIS, par exemple une infrastructure particulière, ou une fonctionnalité IIS telle que la compression dynamique, plutôt que des autorisations sur web.config.

Si tel est le cas, une solution peut être d'installer et d'utiliser le programme d'installation de la plate-forme Microsoft et d'installer ces composants manquants - vous devrez peut-être essayer ce qui manque exactement car le journal des erreurs et le message ne vous le disent pas.

eagle779
la source
NB: la compression dynamique est dans la liste des 'fonctionnalités Windows' et non MPI
Simon_Weaver
@Simon_Weaver en fait, la compression dynamique est dans la liste des choses que MPI va installer pour vous et ce depuis 2012, peut-être même avant. à votre santé.
eagle779
4

Essayez d'installer le sous-composant «Développement d'applications» d'IIS comme mentionné dans ce SO

  • Cliquez sur "bouton Démarrer" dans la zone de recherche, entrez "Activer ou désactiver les fonctionnalités de Windows"
  • dans la fenêtre des fonctionnalités, cliquez sur: "Internet Information Services"
  • Cliquez sur: "Services World Wide Web"
  • Cliquez sur: "Fonctionnalités de développement d'applications"
  • Vérifiez (activez) les fonctionnalités. J'ai vérifié tout sauf CGI.

entrez la description de l'image ici

IsaacBok
la source
3

Vous devez définir l'autorisation pour votre dossier de site Web ou les copier dans le dossier wwwroot :) - Si vous définissez l'autorisation, disposez de 2 façons: + clic droit sur le dossier de votre site Web + ou clic droit sur votre site Web dans IIS => sélectionnez Modifier l'autorisation et ajouter un permission (IUSR - utilisateur iis par défaut) Bonne chance ;-)

SownRocker
la source
Dans mon cas - iis 8, il s'agissait d'utilisateurs authentifiés.
le scion du
3

Dans mon cas, cela provoqué par le chemin physique de l'application pointe vers un dossier inexistant dans IIS.

capture d'écran des paramètres de l'application

chengbo
la source
3

J'ai eu la question que je copiais mon fichier web.config vers le bas de prod, tout a changé non liés à l' exception des prod règles Réécrire qui ont été réécrivent à http S .

Supprimé ces règles et s'est bien déroulé.

DanO
la source
2

Assez simple, IIS n'a pas accès à votre web.config. Je commencerais par retirer le site de votre dossier de documents. Vérifiez également qu'il dispose des autorisations r / w.

OnResolve
la source
Je déplace le site de Document vers un autre endroit mais la même erreur apparaît
Yasmeen
2

Moi aussi, j'ai eu le problème similaire et je l'ai résolu en commentant certaines sections du fichier web.config.

Le projet a été précédemment construit et déployé dans .Net 2.0. Après avoir migré vers .Net 3.5, il a commencé à lever l'exception.

Résolutions:

Si votre fichier de configuration contient "< sectionGroup name =" system.web.extensions > ", commentez-le et exécutez-le car cette section est déjà disponible sous Machine.config.

Munna Singh
la source
2

Vous pouvez obtenir cette erreur si vous avez une erreur de synchronisation ou un problème dans votre fichier web.config.

Pour moi, c'était une esperluette errante dans une URL que j'utilisais dans les AppSettings.

Tim P.
la source
J'ai également obtenu ceci avec un mot de passe dans une chaîne de connexion qui avait un & - encodage en & amp; m'a permis de surmonter ce problème. Merci, c'est la seule réponse ici à ne pas faire avec les autorisations.
Jeremy Thompson
2

Sur la page d'erreur IIS 7.5, cliquez sur «Afficher plus d'informations» au bas de la page et dans ce cas, il vous amènera au lien Microsoft suivant:

http://support.microsoft.com/kb/942055

Le 0x80070005 Le code d'erreur semble être lié aux autorisations et en suivant les étapes de la résolution 2, la méthode 2 attribuant les bons comptes avec des autorisations sur les dossiers appropriés devrait le corriger - j'ai passé 3 jours à chercher une solution jusqu'à ce que je la trouve, j'ai travaillé directement après.

kbbucks
la source
2

a rencontré ce problème avec les lecteurs mappés, IIS ne fonctionne pas avec les lecteurs mappés. Utilisez simplement le lecteur non mappé.

Rob Sedgwick
la source
2

Explorez le dossier où se trouve votre site Web et voyez que vous obtiendrez un dossier supplémentaire "aspnet_client" supprimez ce dossier et cela fonctionnera pour vous.

J'ai essayé cela, mon problème est résolu.

Si cela fonctionne pour vous, veuillez le faire comme réponse afin que quelqu'un d'autre obtienne également une solution.

Rahul Sonone
la source
1

Rien de tout cela n'a fonctionné pour moi, mais j'ai finalement une solution qui a fonctionné pour moi:

supprimez cette ligne dans web.config:

<compilation debug="true" targetFramework="4.5"/>

ne supprimez pas cette ligne

<compilation debug="true"/>
Luca Steeb
la source
1

Ajoutez le compte local IIS_IUSRS à la sécurité et agrandissez-les en lecture / exécution. cela fonctionne sur mon cas.

user3534355
la source