web-dev-qa-db-fra.com

L'accès au chemin ':\inetpub\wwwroot\myapp\App_Data' est refusé

Je viens d'installer IIS sur Windows XP.

Lorsque j'essaie d'exécuter une application, j'obtiens une erreur:

L'accès au chemin 'c:\inetpub\wwwroot\myapp\App_Data' est refusé . Description: une exception non gérée s'est produite lors de l'exécution de la demande Web en cours. Veuillez vérifier la trace de la pile pour plus d'informations informations sur l'erreur et son origine dans le code.

Détails des exceptions: System.UnauthorizedAccessException: Accès au fichier Le chemin 'c:\inetpub\wwwroot\myapp\App_Data' est refusé.

ASP.NET n'est pas autorisé à accéder à la ressource demandée. Considérer attribution de droits d'accès à la ressource à la demande ASP.NET identité. ASP.NET a une identité de processus de base (généralement {MACHINE}\ASPNET sur IIS 5 ou un service de réseau sur IIS 6) qui est utilisée si l'application ne prend pas l'identité. Si l'application est en se faisant passer pour, l'identité sera l'utilisateur anonyme (généralement IUSR_MACHINENAME) ou le .__ authentifié. demande à l'utilisateur.

Pour accorder l'accès ASP.NET à un fichier, cliquez avec le bouton droit sur le fichier dans l'explorateur, choisissez "Propriétés" et sélectionnez l'onglet Sécurité. Cliquez sur "Ajouter" pour ajouter l'utilisateur ou le groupe approprié. Mettez en surbrillance le compte ASP.NET et Cochez les cases correspondant à l'accès souhaité.

Erreur de source:

Ligne 70: Protected Sub cmbSettingFiles_SelectedIndexChanged (ByVal Sender As Object, ByVal et As System.EventArgs), poignées cmbSettingFiles.SelectedIndexChanged
Ligne 71: Dim doc As XmlDocument = New XmlDocument ()
Ligne 72: doc.Load (Path.Combine (basePath, cmbSettingFiles.SelectedValue)) Ligne 74: Dim settingsNode As XmlNode = doc.SelectSingleNode ("/ settings")

Fichier source: C:\myapp\install\install.aspx.vb Ligne: 72 

J'ai essayé d'autoriser la grille en faisant ceci:

Pour accorder l'accès ASP.NET à un fichier, cliquez avec le bouton droit sur le fichier dans l'explorateur, choisissez "Propriétés" et sélectionnez l'onglet Sécurité. Cliquez sur "Ajouter" pour ajouter l'utilisateur ou le groupe approprié. Mettez en surbrillance le compte ASP.NET et Cochez les cases correspondant à l'accès souhaité.

Mais l'erreur persiste.

Cela at-il quelque chose à voir avec mon code?

Comment puis-je résoudre ça?

MODIFIER

J'ai résolu le problème sur ma machine de développement, mais l'erreur persiste sur mon serveur Web.

Merci.

12
Smith

Essayez d’accéder à la propriété de dossier App_Data et d’ajouter un utilisateur ASPNET avec read et écrire des privilèges

Ref:
Comment attribuer des autorisations correctes au dossier App_Data de WebMail Pro ASP.NET
Autorisations sur le dossier APP_DATA
ASP/ASP.NET Le meilleur moyen de gérer les autorisations d’écriture?

Si cela ne résout pas votre problème, vérifiez si vos fichiers XML ne sont pas ouverts par un autre thread utilisant ces fichiers de configuration .. et fournissez des informations supplémentaires si le problème persiste.

11
Niranjan Singh

Pour ceux qui exécutent IIS sur Windows Server:

Par défaut, l'utilisateur IIS ne dispose pas d'autorisations en écriture pour le dossier wwwroot. Cela peut être résolu en accordant des autorisations complètes à l'utilisateur IIS_IUSRS pour wwwroot.

  1. Ouvrez l'explorateur de fichiers et allez à C:/inetpub/
  2. Faites un clic droit sur wwwroot et cliquez sur "Propriétés"
  3. Accédez à l'onglet Sécurité et cliquez sur "Modifier ..." pour modifier les autorisations.
  4. Recherchez et sélectionnez l'utilisateur IIS. Dans mon cas, cela s'appelait IIS_IUSRS ([server name]\IIS_IUSRS).
  5. Cochez la case "Autoriser" pour toutes les autorisations.
7
Joshua Wade

Considérez si votre fichier est en lecture seule, les paramètres supplémentaires peuvent aider avec FileStream

using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read))
4
KenF

J'ai essayé d'ajouter ASP.net v4.0 avec toutes les autorisations, ajouter un utilisateur NETWORK SERVICE mais rien ne m'aide .. .. Enfin, le droit MODIFY de l'utilisateur DefaultAppPool a été ajouté dans le dossier App_Data.

1
Tin

J'ai eu une situation similaire. J'utilise TFS pour le contrôle du code source. Ce que j’ai trouvé, c’est que lorsqu’il a été archivé, les fichiers étaient en lecture seule. Cela a causé l'erreur ci-dessus dans mon service où il les ouvrait en lecture/écriture. Une fois que je les ai vérifiés pour édition. Tout a bien fonctionné. J'envisage d'essayer de les ouvrir en lecture seule dans le service. Je pense qu’une fois publiées sur le serveur de production, le problème ne se pose pas. Seulement dans l'environnement de développement. J'ai constaté des problèmes similaires avec les services utilisant Entity Framework. Si le fichier .svc est archivé, vous ne pouvez pas effectuer de mises à jour de la base de données via EF.

1
Jim Wilcox

Êtes-vous sûr que vous ajoutez le bon utilisateur? Avez-vous vérifié pour voir quel utilisateur est défini pour votre pool d'applications?

Cette erreur se produira également si le fichier ne peut pas être lu pour une raison quelconque. tel que le fichier est verrouillé ou utilisé par une autre application. S'agissant d'une application Web ASP.NET, vous devez vous assurer que vous n'exécutez aucune action nécessitant le verrouillage du fichier. sauf si vous pouvez garantir que vous n'aurez qu'un seul utilisateur à la fois sur votre page.

Pouvez-vous poster un exemple de la façon dont vous accédez au fichier? De quel type de fichier s'agit-il? Les extraits de code vous aideront à obtenir une réponse plus précise.

1
Shawn Lehner

Une autre raison pourrait être que le chemin du fichier est vide et que vous essayez d'écrire, c'est pourquoi il ne le trouve pas. juste une autre raison pour laquelle cette erreur se produit.

0
Bilal

Veuillez exécuter Visual Studio avec le privilège d’administrateur. Ce problème est résolu pour moi.

L'accès au chemin est refusé. C:\inetpub\wwwroot Est refusé indique que le site Web libre-service ne peut pas accéder à un dossier spécifique du serveur sur lequel il est installé. Cela peut être dû au fait que l'emplacement n'existe pas ou au fait que l'utilisateur authentifiant ne dispose d'aucune autorisation appliquée à l'écriture sur cet emplacement.

0
Shibu Thomas

Essayez d’accorder l’autorisation à l’utilisateur NETWORK SERVICE.

0
Hiber