195 votes

Pourquoi l'accès au chemin est-il refusé ?

J'ai un problème lorsque j'essaie de supprimer mon fichier mais je reçois une exception.

if (result == "Success")
{
     if (FileUpload.HasFile)
     {
         try
         {
              File.Delete(Request.PhysicalApplicationPath + app_settings.login_images + txtUploadStatus.Text);
              string filename = Path.GetFileName(btnFileUpload.FileName);
              btnFileUpload.SaveAs(Request.PhysicalApplicationPath + app_settings.login_images + filename);
         }
         catch (Exception ex)
         {
               Message(ex.ToString());
         }
      }
}

Je dois également noter que le dossier que j'essaie de supprimer a un contrôle total sur les services réseau.

Le message d'exception complet est le suivant :

System.UnauthorizedAccessException : L'accès au chemin ' C:\Users\gowdyn\Documents\Visual Studio 2008 \Projects\hybrid\hybrid\temp_loginimages\enviromental.jpg est refusé. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.File.Delete(String path) at hybrid.User_Controls.Imgloader_Add_Edit_Tbl.btnUpdate_Click(Object sender, EventArgs e) in C:\Users\gowdyn\Documents\Visual Studio 2008 \Projects\hybrid\hybrid\User_Controls\Imgloader_Add_Edit_Tbl.ascx.cs :ligne 242

Des idées ?

257voto

CrazyTim Points 503

Selon Méthode File.Delete ...

Un site UnauthorizedAccessException signifie l'une des 4 choses suivantes :

  • L'appelant n'a pas l'autorisation requise.
  • Le fichier est un fichier exécutable qui est en cours d'utilisation.
  • Le chemin est un répertoire.
  • Le chemin d'accès spécifie un fichier en lecture seule.

193voto

riaandelange Points 671

J'ai également eu ce problème, d'où le fait que je sois tombé sur ce post. J'ai ajouté la ligne de code suivante avant et après un Copy / Delete.

Supprimer

File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);

Copie

File.Copy(file, dest, true);
File.SetAttributes(dest, FileAttributes.Normal);

35voto

Andrew Edvalson Points 440

C'est un vieux problème, mais je l'ai rencontré en cherchant. Il s'avère qu'il me manquait le composant du nom de fichier réel dans le chemin d'enregistrement pour les SaveAs...

string uploadPath = Server.MapPath("~/uploads");
file.SaveAs(uploadPath); // BAD
file.SaveAs(Path.Combine(uploadPath, file.FileName)); // GOOD

24voto

ArsenMkrt Points 24447

Lorsqu'un utilisateur tente de se connecter à votre site Web, IIS attribue la connexion à l'adresse suivante IUSER_ComputerName où ComputerName est le nom du serveur sur lequel IIS est exécuté. Par défaut, le compte IUSER_ComputerName est un membre du groupe Guests. Ce groupe a des restrictions de sécurité. Essayez de donner l'accès à ce dossier à IUSER_ComputerName.

Ici est une très bonne réponse décrite sur la sécurité d'IIS

J'espère que cela vous aidera

5voto

user1209939 Points 30

L'exception qui est levée lorsque le système d'exploitation refuse l'accès en raison d'une erreur d'E/S ou d'un type spécifique d'erreur de sécurité.

J'ai rencontré la même chose. Vérifiez que le fichier n'est PAS CACHÉ.

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