web-dev-qa-db-fra.com

Impossible de lire le fichier de configuration en raison d'autorisations 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.

Solution:

  1. Ajouter IIS_IUSRS avec l'autorisation de lecture sur les fichiers du dossier
  2. Remplacez la méthode d'authentification IIS par BasicAuthentication
  3. actualiser le site. Ça va marcher

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

Que dois-je ajouter à mon fichier web.config cependant? 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 d'autorisations insuffisantes
Fichier de configuration: \?\C:\Utilisateurs *****\Documents\Visual Studio2010\WebSites\PointsForTime\web.config

300
FreeSnow

Il y a pas de problème avec votre web.config. Votre site Web est soumis à un processus. Dans iis, vous pouvez définir l'identité de ce processus. Le identité que, votre site Web pool d'applications s'exécute en tant que ( Services réseau, système local , Etc. ...), devrait avoir la permission d'accéder et de lire le fichier web.config.

Mise à jour:

Cette réponse mise à jour est la même que ci-dessus, mais un peu plus longue, plus simple et améliorée.

Tout d'abord: vous n'avez rien à changer dans votre fichier de configuration. ça va. Le problème est avec autorisations de fichiers Windows.

Ce problème se produit car votre application ne peut pas accéder et lire web.config fichier.

Rendre le fichier accessible au groupe IIS_IUSRS. Juste clic droit web.config et cliquez propriétés, sous sécurité onglet, ajoutez IIS_IUSRS.

Alors, quelle est cette chose IIS_IUSRS?

Votre site web est comme un fichier exe. Comme tout fichier exe, il devrait être démarré par un utilisateur et il s'exécute en fonction des autorisations attribué à cet utilisateur.

Lorsque votre site est démarré dans IIS, Pool d'applications de votre site Web est associé à n utilisateur ( Services réseau, système local , etc. ...) (et peut être modifié dans IIS)

Donc, quand vous dites IIS_IUSRS, cela signifie tout utilisateur ( Services réseau, système local , etc. ...) que votre site fonctionne en tant que.

Et comme @ Seph mentionné dans commentaire ci-dessous: Si votre ordinateur est sur un domaine , rappelez-vous que le groupe 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.

512
Afshin Gh

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

Compte complètement fiable, plus que le compte administrateur. Ce compte ne contient aucune case que ce compte ne peut pas faire et il a le droit d'accéder au réseau en tant que machine (cela nécessite Active Directory et l'octroi d'autorisations de compte à la machine)


Le changement de l'identité de ApplicationPoolIdentity à LocalSystem a effectué le travail;).

J'utilise win7 64 avec IIS 7.5

plus d'informations sur Identité de pool d'applications dans IIS 7.5 et gagnez 7

enter image description here

65
amd

J'ai eu ce qui semblait être le même problème d'autorisations sur le fichier web.config.
Cependant, mon problème était dû au fait que IIS n'avait pas chargé le fichier de configuration car il contenait des règles de réécriture d'URL et que je n'avais pas installé le module de réécriture d'URL IIS sur le nouveau serveur.

Solution: Installez le module de réécriture.
Espérons que cela économise quelques heures à quelqu'un.

55
Jarrod

J'ai eu le même problème lorsque j'ai essayé de partager le dossier racine du site avec un autre utilisateur. Certains dossiers ont perdu l'autorisation . J'ai donc suivi les étapes pour ajouter l'autorisation à IIS_IUSRS groupe comme suggéré par Afshin Gh . Le problème est que ce groupe n'était pas disponible pour moi. J'utilise Windows 7.

Ce que j'ai fait, je viens de changer quelques étapes:

  1. Faites un clic droit sur le dossier parent (qui a perdu l'autorisation),
  2. Propriétés => Sécurité => Dans "Noms de groupe ou d'utilisateur:",
  3. Cliquez sur Edit ...
  4. La fenêtre "Permission pour votre dossier" sera ouverte.
  5. Dans "Noms d'utilisateur ou de groupe:", appuyez sur ADD ... btn,
  6. Tapez Authen et appuyez sur Vérifier les noms,
  7. Vous verrez le nom complet du groupe " Utilisateurs authentifiés "
  8. Appuyez sur ok => appliquer.
  9. Cela devrait permettre à nouveau les privilèges.

Cela a fonctionné pour moi.

27
zwitterion

Vous n'avez rien à changer dans votre web.config.

Le problème est les autorisations du système de fichiers. Vos autorisations de fichier n'autorisent pas l'utilisateur IIS_IUSRS à accéder à web.config (ou probablement à aucun des fichiers). Modifiez leurs autorisations de fichier dans Windows pour autoriser le compte IIS_IUSRS à y accéder.

17
Erik Funkenbusch

Rendez le fichier accessible au groupe IIS_IUSRS . Cliquez avec le bouton droit sur votre configuration web, développez les propriétés et, sous l'onglet Sécurité, ajoutez IIS_IUSRS. Donnez au groupe un accès en lecture/écriture. 

Lorsque le groupe estPASdisponible, remplacez IIS_IUSRS par ComputerName\IIS_IUSRS

14

Accédez au dossier parent, cliquez avec le bouton droit de la souris et sélectionnez Propriétés . Sélectionnez l'onglet Sécurité , modifiez les autorisations et Ajouter . Cliquez sur Avancé et sur Trouver maintenant . Sélectionnez IIS_IUSRS et cliquez à nouveau surOKetOK. Assurez-vous de vérifier Ecrire . Cliquez surOKetOK.

Travail accompli!

14
Quinny

Lorsque vous accordez des autorisations à IIS_IUSRS , vous devez vérifier que dans la section IIS/Authentication de votre application Web, les informations d'authentification anonyme utilisent l'identité du pool d'applications et non IUSR.

enter image description here

9
Carlos

Pour une raison quelconque, votre web.config est défini en lecture seule. Décochez l'option readonly du fichier web.config.

6
Luis

J'avais besoin d'ajouter des autorisations à IUSR (en plus de ISS-IUSRS, comme d'autres l'ont suggéré) . (Voir aussi: http://codeasp.net/blogs/raghav_khunger/Microsoft-net/2099/iis-7-5-windows-7-http-error-401-3-non autorisé )

5
coberlin

J'ai utilisé subst pour créer un mappage de D: à C: afin de conserver la même configuration que les autres développeurs de l'équipe. Cela m'a aussi donné les mêmes erreurs que celles décrites. Le fait de supprimer cela a résolu le problème pour moi.

3
Sniipe

Assurez-vous que votre fichier web.config n'est pas marqué en lecture seule.

1
Oranit Dar

La modification de l'identité de modèle de processus sur LocalSystem a résolu ce problème pour moi. Vous pouvez trouver ce paramètre si vous cliquez avec le bouton droit sur le pool d'applications et choisissez "Paramètres avancés". J'exécute IIS 7.5.

1
jshoaf

Déplacez votre projet sur un lecteur autre que C: Cela a fonctionné pour moi avec la même erreur.

1
Talha Imam

J'ai résolu ce problème en ajoutant une autorisation de lecture au dossier de l'utilisateur du pool d'applications (WIN SERVER 2008 R2): C:\Windows\System32\inetsrv\config

Un peu d’arrière-plan: Notre serveur a été piraté à l’aide d’une erreur classique où l’utilisateur de l’application disposait de plus de permissions que nécessaire (administrateur local).

Pour résoudre ce problème, nous avons créé un nouvel utilisateur de domaine disposant uniquement d'autorisations sur le dossier de l'application, avec le minimum de droits nécessaires, et l'attribuant en tant qu'utilisateur du pool d'applications. que nous avons frappé dans le problème et c'était la solution à nos problèmes.

1
ludens

Toutes les réponses données sont valables et fonctionnent dans des circonstances différentes.

Pour moi, redémarrer Visual Studio a fonctionné.

1
Doruk

La solution acceptée n'a pas pour moi. J'utilise un dépôt Git et il est cloné dans le dossier suivant

c:\users\myusername\source\repos\myWebSite

J'ai créé un nouveau site Web IIS et l'ai pointé vers le chemin. Qui n'avait pas les permissions iis_iusrs suggérées dans la solution acceptée. Lorsque j'ai ajouté les autorisations, cela ne fonctionnait toujours pas.

Cela n'a commencé à fonctionner que lorsque j'ai donné les autorisations suivantes au groupe 'Utilisateurs' et que l'héritage a associé les autorisations à web.config. Il aurait probablement dû l'appliquer uniquement à web.config pour réduire la surface d'attaque.

 User Pemissions

1
Tom McDonald

Nous avions un site Web fonctionnant sous une identité spécifique dans l'apppool, uniquement après avoir donné à cet utilisateur un accès en lecture au dossier contenant le fichier web.config si cela fonctionnait ... a bien fonctionné.

1
rob

Pour moi, l'erreur est apparue lors du débogage sur ma machine locale et s'est avérée être liée au web.config de base, qui est initié par le .NET Framework lors de la compilation du site Web. Mon fichier C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config contenait un élément non reconnu (folderLevelBuildProviders). Corriger ceci a corrigé l'erreur 500.19.

Voir ceci: IIS Le gestionnaire ne peut pas configurer la compilation .NET sur les applications .NET 4

1
Rafael Emshoff

Cela nous est arrivé lorsque application IIS a un répertoire virtuel avec un chemin physique qui contient des barres obliques / au lieu de barres obliques inverses \. Cela a été fait accidentellement à l'aide d'une API PowerShell Management pour IIS au cours de notre processus de diffusion continue.

Exemple de mauvaise configuration - applicationHost.config

<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
    <virtualDirectory path="/" physicalPath="C:\inetpub\MySite/MyService" />
</application>

Assurez-vous que l'attribut physicalPath ne contient pas de barres obliques /, seulement des barres obliques inverses \

Exemple de configuration corrigé - applicationHost.config

<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
    <virtualDirectory path="/" physicalPath="C:\inetpub\MySite\MyService" />
</application>
1
SliverNinja - MSFT

Cliquez avec le bouton droit de la souris sur Web.Config => Onglet Sécurité => Bouton Modifier => Bouton Ajouter => Bouton Avancé => Bouton Rechercher maintenant => Dans les résultats de la recherche sélectionnez votre groupe (dans notre cas, "IIS_IUSRS") => Ok = > Ok => ok

1
Igor Levkivskiy
  1. Aller sur IIS, (sites)
  2. Faites un clic droit sur le projet dans les sites. entrez la description de l'imagehere

et cliquez sur l'autorisation de modification.

  1. Aller à la sécurité.

  2. cliquez sur le bouton Modifier.

  3. cliquez sur le bouton Ajouter. tapez COMPUTER_NAME\IIS_USERS

    ou

  4. cliquez sur avance.

  5. cliquez sur le bouton Rechercher maintenant.

    et il y a une option pour choisir . choisissez IIS_USERS et cliquez sur ok ... ok .... ok .

0
subash adhikari

Parfois, s’il s’agit d’un nouveau serveur, vous devez configurer ou installer la fonctionnalité ASP.NET sur IIS pour que votre fichier web.config puisse être lu. 

Dans mon cas, c'était la raison.

0
SanthoshM

J'ai donné la permission et utilisé ICACLS.exe mais je n'ai pas fonctionné. Ensuite, j'ai changé le chemin physique et cela a fonctionné avec succès.

(IIS 8.5 windows 2012 R2)

0
Adem Aygun

Cela peut se produire si votre application se trouve dans un répertoire virtuel et que le chemin d'accès aux fichiers est un lecteur mappé. 

Si vous modifiez le chemin d'accès aux fichiers sur un lecteur local, le problème sera résolu, si tel est votre problème.

0
UKcentric

J'ai essayé la plupart des suggestions précédentes mais en vain. Je ne peux pas recharger le site Web, j'ai donc modifié le fichier .csproj, changé le numéro de port et cela a fonctionné immédiatement:

 <WebProjectProperties>
      <UseIIS>True</UseIIS>
      <AutoAssignPort>True</AutoAssignPort>
      <DevelopmentServerPort>**4000**</DevelopmentServerPort>
      <DevelopmentServerVPath>/</DevelopmentServerVPath>
      <IISUrl>http://localhost:**4000**/</IISUrl>
      <NTLMAuthentication>False</NTLMAuthentication>
      <UseCustomServer>False</UseCustomServer>
      <CustomServerUrl>
      </CustomServerUrl>
      <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
    </WebProjectProperties>

Modification du fichier .csproj

0
Ramadan Alrai

Je recevais également le message "Impossible de lire le fichier de configuration en raison d'autorisations insuffisantes". Il s'avère que les restrictions ISAPI et CGI dans IIS pour ASP.NET 4.0 32 bits et 64 bits étaient définies pour refuser. En les marquant tous les deux sur Autorisé, j'ai résolu mon problème.

0
Earl

vérifiez si le fichier n'est pas marqué comme en lecture seule , malgré l'autorisation IIS_IUSRS, il affichera le même message.

0
Syed Umar Ahmed

J'ai eu le même problème et aucune de ces solutions n'a fonctionné pour moi. Je continuais à avoir la même erreur et une erreur sur "Échec de la surveillance des modifications" dans l'observateur d'événements. 

La seule chose qui a fonctionné a été de copier le dossier et de le renommer. Il doit s'agir d'un dossier corrompu dans Windows auquel IIS/ASP.NET n'a pas accès.

0
Trent U

J'exécutais un site Web sur localhost/MyApp créé et exécuté via Visual Studio - via un répertoire virtuel créé par Visual Studio lui-même.

La "solution" pour moi était de supprimer le répertoire virtuel et de laisser Visual Studio le recréer.

0
WernerCD

Ce message d'erreur s'est avéré dû au fait que mon dossier physique se trouvait sur un lecteur réseau plutôt que sur le lecteur local. Il semble que les autorisations sur ces lecteurs puissent être différentes par défaut. Par exemple, si l'emplacement du lecteur local donnait l'autorisation aux utilisateurs de l'ordinateur local, ce n'était pas l'emplacement réseau.

De plus, la réponse acceptée ne fonctionne pas dans un tel cas. Les utilisateurs locaux ou les utilisateurs IIS n'étaient pas disponibles pour attribuer des autorisations. La solution consistait à déplacer le dossier physique sur le lecteur local.

0
Kat

J'avais le même problème et après avoir fait tout ce qui était écrit ici comme réponses, le message était toujours reproduit ... La deuxième partie du problème était le fait que .NET était désactivé dans "Activer ou désactiver des fonctionnalités Windows".

0
Bogdan Mates

C'est certainement un problème d'autorisations. J'ai pris les mesures suivantes et cela a fonctionné pour moi.

  1. sélectionnez votre site Web ou votre application dans le coin gauche. Dans la plupart des cas, il s’agirait de site Web par défaut.
  2. cliquez sur Paramètres de base dans le coin droit de IIS Manager 7 ou une version ultérieure.
  3. cliquez sur le bouton connect as.
  4. Utilisez "Specific User", cliquez sur le bouton set.
  5. Entrez votre nom d'utilisateur et mot de passe. comme Domaine\nom d'utilisateur. pour moi c'était comme ABC\rrajkumar, entrez le mot de passe.
  6. redémarrez IIS, parcourez votre site Web. Cela devrait fonctionner maintenant.
0
CredibleAshok

Dans mon cas, j'essayais d'héberger des pages à partir d'un lecteur mappé (subst). Le problème est que le poste a été exécuté sous mon compte et que l'utilisateur IIS ne peut pas voir le même lecteur

0
Dinesh Rajan

Ce problème fonctionnait sous Windows 10 avec le pool d'applications en utilisant un compte microsoftaccount\[email protected] (par exemple, en vous connectant au PC avec un compte Microsoft plutôt qu'un compte local).

Apparemment, quelque chose a été corrompu sur mon ordinateur; supprimer IIS et l'ajouter de nouveau n'a aucun effet (car il semble que la métabase IIS n'a pas été supprimée). Supprimer et recréer le pool d'applications n'a pas aidé non plus. 

Ma solution consistait simplement à créer un nouveau pool d'applications avec les mêmes paramètres mais un nom différent. Cela a résolu le problème pour moi; Apparemment, quelque chose a été corrompu avec l'apppool qui même le supprimer et l'ajouter avec le même nom ne résoudrait rien.

0
Andy

Avait ce problème avec une application virtuelle. Toutes les autorisations ont été définies. IIS_IUSRS, AppPoolIdentity, puis a donné un accès complet à Tout le monde. Rien n'a fonctionné. L'apppool, le site et IIS redémarrés, mais rien ne va.

Supprimé l'application virtuelle et l'a ajouté à nouveau à partir de zéro et il a commencé à fonctionner.

Je voudrais savoir ce qui a résolu le problème.

0
gbs