437 votes

Impossible de lire le fichier de configuration en raison de permissions insuffisantes

J'ai récemment rencontré une erreur en essayant d'héberger mon site asp.net avec IIS. J'ai trouvé une solution que beaucoup ne jurent que par elle.

Solution :

  1. Ajouter IIS_IUSRS avec la permission de lecture sur les fichiers dans le dossier
  2. Changer la méthode d'authentification de IIS en BasicAuthentication
  3. rafraîchissez le site web. Cela fonctionnera

( http://vivekthangaswamy.blogspot.com/2009/07/aspnet-website-cannot-read.html )

Mais qu'est-ce que je dois ajouter à mon fichier web.config ? Je n'ai jamais eu à le modifier auparavant. Voici son contenu actuel :

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
    <connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"
   providerName="System.Data.SqlClient" />
 </connectionStrings>
 <system.web>
  <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
    </system.web>
</configuration>

Mon erreur est :

Erreur de configuration : Impossible de lire le fichier de configuration en raison de permissions insuffisantes
Fichier de configuration : \ ? \C : \Users ***** \Documents\Visual Studio2010 \WebSites\PointsForTime\web.config

9 votes

Veuillez consulter l'installation du module de réécriture. Épargnez-vous quelques heures.

0 votes

Ma solution serait d'exécuter les commandes à partir de la ligne de commande ouverte avec des privilèges d'administrateur. Pour ce faire, trouvez l'invite de commande, faites un clic droit dessus et cliquez sur exécuter avec les privilèges de l'administrateur.

1 votes

En plus des autres réponses, notez que le cryptage du système de fichiers (EFS) peut également interférer avec IIS.

627voto

Afshin Gh Points 2774

Il y a aucun problème avec votre web.config . Votre site web fonctionne sous un processus. Dans iis, vous pouvez définir l'identité de ce processus. Le site identité que le site web de votre parc de candidatures fonctionne comme ( Services de réseau, système local etc.), doivent avoir la permission d'accéder au fichier web.config et de le lire.

Mise à jour :

Cette réponse actualisée est identique à la précédente, mais un peu plus longue, plus simple et améliorée.

Tout d'abord Vous n'avez pas besoin de changer quoi que ce soit dans votre fichier de configuration. C'est bon. . Le problème est le suivant Autorisations de fichiers Windows .

Ce problème se produit parce que votre demande ne peut pas accès et lire web.config fichier.

Rendre le fichier accessible à IIS_IUSRS groupe. Juste cliquez à droite sur web.config et cliquez sur propriétés , sous sécurité onglet, ajouter IIS_IUSRS .

Alors, c'est quoi ce truc IIS_IUSRS ?

Votre site web est comme un exe fichier. Comme tout fichier exe, il doit être lancé par un utilisateur et il fonctionne selon les autorisations attribué à cet utilisateur.

Lorsque votre site est lancé dans IIS , Pool d'applications de votre site web est associé à un utilisateur ( Services de réseau, système local Etc. ...) (et peut être modifié dans IIS)

Donc quand vous dites IIS_IUSRS cela signifie tout utilisateur ( Services de réseau, système local Etc. ...) que votre site utilise.

Et comme @Seph mentionné dans commentaire ci-dessous : Si votre ordinateur se trouve sur un domaine rappelez-vous que IIS_IUSRS est un groupe groupe local . Assurez-vous également que lorsque vous essayez de trouver cet utilisateur, vérifiez l'emplacement, il doit être défini sur l'ordinateur local et non sur un domaine d'entreprise.

87 votes

Pour les autres, il est utile de souligner que la valeur par défaut est habituellement IIS_IUSRS et pour être sûr que lorsque vous essayez de trouver cet utilisateur, vérifiez l'emplacement, il doit être réglé sur l'ordinateur local et non sur un domaine d'entreprise.

0 votes

Comment s'y prendre ?

0 votes

Ce que Seph voulait dire, c'est que vous devez simplement cliquer sur "Chemin" et au lieu du répertoire entier, choisissez votre machine locale. Là, vous pouvez trouver l'utilisateur IIS_IUSRS. (J'espère que "Path" est la traduction correcte car j'ai un Windows allemand).

88voto

Jarrod Points 60

J'avais ce qui semblait être le même problème de permissions sur le web.config fichier.
Cependant, mon problème était dû au fait que IIS ne parvenait pas à charger le fichier de configuration parce qu'il contenait des règles de réécriture d'URL et que je n'avais pas installé le module de réécriture d'URL de IIS sur le nouveau serveur.

Solution : Installez le module de réécriture.
J'espère que ça fera gagner quelques heures à quelqu'un.

0 votes

Yup. Le serveur précédent sur lequel j'ai utilisé ce système a réécrit la route non ssl en route ssl autant dire que le message d'erreur d'IIS était génial. error: :) +1 Parce qu'au lieu d'exiger SSL, j'ai réécrit l'URL en HTTPS au cas où quelqu'un ferait un lien sans https. Quelle énigme.

0 votes

Merci !!! J'ai passé des heures à trafiquer les autorisations et c'est grâce à ça que j'ai réussi !

0 votes

Comment procéder pour installer le module de réécriture d'URL de IIS ?

67voto

Ahmad Points 4329

Note de l'éditeur : Faire ce que dit cette réponse est DANGEREUX ! Le compte LocalSystem est un compte ...

Compte de confiance complet, plus que le compte administrateur. Il n'y a rien sur une boîte unique que ce compte ne puisse faire, et il a le droit d'accéder au réseau en tant que machine (cela nécessite Active Directory et l'octroi de permissions au compte machine).


Changer l'identité de ApplicationPoolIdentity à LocalSystem a fait le travail ;).

J'utilise Win7 64 avec IIS 7.5.

plus sur Identité du pool d'applications dans IIS 7.5 et win 7

enter image description here

0 votes

Réponse utile pour IIS 6 également. Vous trouverez plus d'informations sur la façon de modifier l'identité du pool d'applications sur le site Web de Microsoft ici : microsoft.com/technet/prodtechnol/WindowsServer2003/Bibliothèque/IIS/

27 votes

Cette modification constitue un risque pour la sécurité en raison de l'accès que vous accordez à ce service : msdn.microsoft.com/fr/us/library/Windows/desktop/

0 votes

Cela semble avoir été mon problème ici et changer l'identité du pool d'applications en LocalSystem a fonctionné comme décrit !

19voto

Erik Funkenbusch Points 53436

Vous n'avez pas besoin de changer quoi que ce soit dans votre web.config.

Le problème vient des autorisations du système de fichiers. Vos autorisations de fichiers ne permettent pas à l'utilisateur IIS_IUSRS d'accéder à web.config (ou probablement à aucun des fichiers). Modifiez les autorisations de fichiers dans Windows pour permettre au compte IIS_IUSRS d'y accéder.

1 votes

J'ai eu un problème similaire. Si quelqu'un ne trouve pas l'utilisateur IIS_IUSRS, vérifiez l'emplacement. Le mien était par défaut le domaine de l'entreprise, donc je ne l'ai pas trouvé tout de suite parce que j'ai oublié de vérifier où il cherchait.

0 votes

@Mystere Man J'ai le même problème. J'ai changé les permissions et j'ai essayé. J'obtiens toujours la même erreur :(

0 votes

"(ou probablement n'importe lequel des fichiers)" fonctionne pour moi, permettre au compte IIS_IUSRS d'accéder à web.config n'est pas suffisant, j'ai besoin de lui permettre d'avoir accès à tous les fichiers du site aide.

13voto

Quinny Points 109

Allez dans le dossier parent, cliquez avec le bouton droit de la souris et sélectionnez Propriétés . Sélectionnez le Sécurité modifier les permissions et Ajouter . Cliquez sur Avancé et le Trouver maintenant . Sélectionnez IIS_IUSRS et cliquez sur OK et OK à nouveau. Assurez-vous que vous avez vérifié Écrire à . Cliquez sur OK et OK encore.

C'est fait !

23 votes

Pourquoi recommander l'accès en écriture alors que l'accès en lecture est tout ce qui est nécessaire ? /downvoted

2 votes

Le seul IIS* que j'ai est IIS_WPG.

1 votes

@B.ClayShannon Moi aussi. Je n'ai que IIS_WPG

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X