2010-12-02 16 views
2

Lorsque je télécharge un fichier Excel, cette erreur me parvient, quelqu'un peut-il m'aider?Accès au chemin Refus lors du téléchargement d'un fichier Excel

Access to the path 'C:\Data\IronElements\Upload\AUMData\20101202 031815.xlsx' is denied. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.UnauthorizedAccessException: Access to the path 'C:\Data\IronElements\Upload\AUMData\20101202 031815.xlsx' is denied.

ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6) that is used if the application is not impersonating. If the application is impersonating via , the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user.

To grant ASP.NET access to a file, right-click the file in Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Mon code behind a la syntaxe suivante

DateTime date = DateTime.Now; 
       string FileName = Convert.ToString(date.ToString("yyyyMMdd hhmmss")); 
       Directory.CreateDirectory("C:\\Data\\IronElements\\Upload\\AUMData\\Schema"); 
       doesFileExists("C:\\Data\\IronElements\\Upload\\AUMData\\Schema"); 
       fileUpload.PostedFile.SaveAs("C:\\Data\\IronElements\\Upload\\AUMData\\" + FileName + ".xlsx"); 
       System.Threading.Thread.Sleep(5000); 
       string connectionString = WebConfigurationManager.ConnectionStrings["SQLConnection"].ConnectionString; 
       SqlConnection SqlConnect = new SqlConnection(connectionString); 

       try 
       { 
        SqlConnect.Open(); 
        SqlCommand cmdAssetUnderManagement = new SqlCommand("Exec_Insert_AUMAssetValue", SqlConnect); 
        cmdAssetUnderManagement.CommandType = CommandType.StoredProcedure; 
        cmdAssetUnderManagement.ExecuteNonQuery(); 

       } 


       catch (Exception ex) 
       { 
        Response.Write(ex.Message); 
       } 
       finally 
       { 
        SqlConnect.Close(); 
       } 
       lblAUMTA.Visible = true; 
       lblAUMTA.Text = "File Upload Completed"; 
      } 
    private void doesFileExists(string p) 
      { 
       p = string.Concat(p, "\\AUMSchema.xlsx"); 
       if (!File.Exists(p)) 
       { 
        fileUpload.PostedFile.SaveAs("C:\\Data\\IronElements\\Upload\\AUMData\\Schema\\AUMSchema.xlsx"); 
       } 
      } 

Répondre

4

Assurez-vous que le dossier C: \ Data \ IronElements \ Télécharger \ AUMData a NTFS en écriture pour l'utilisateur dans quel contexte IIS exécute. Assurez-vous également que les sous-dossiers de C: \ Data \ IronElements \ Upload héritent des autorisations de son parent. Pour ce faire, cliquez sur le bouton Avancé de l'onglet sécurité -> Modifier les autorisations -> cochez Remplacer toutes les autorisations des objets enfants par des autorisations héritables de cet objet -> Appuyez sur Ok

+0

il possède les autorisations READ et Write – Sravanthi

+0

Assurez-vous qu'il dispose des autorisations pour le compte sous lequel le processus ASP.NET s'exécute. Oh, et assurez-vous qu'il fonctionne sous le compte que vous pensez qu'il est. – JohnFx

+0

OK, ce n'est pas une bonne idée mais faites un essai. Affectez lecture/écriture au rôle Tout le monde pour ce dossier et voyez ce qui se passe. Le téléchargement devrait fonctionner après cela. – Davita

1

Le compte sur lequel votre session Web s'exécute ne dispose pas des autorisations nécessaires pour écrire dans ce dossier. Une fois que vous avez donné au compte ASP.Net (ou au compte que vous utilisez) les autorisations requises, il devrait fonctionner comme prévu.

+0

J'ai fait le dossier à accéder autour du SERVICE de RÉSEAU avec le plein contrôle et ai également fait le dossier comme dossier partagé. mais ça ne marche toujours pas – Sravanthi

0

Afin de mieux gérer les problèmes de permission comme celui-ci, je crée toujours un utilisateur à faible privilège pour faire fonctionner nos sites Web. L'utilisateur est nommé d'après le site Web lui-même, il est donc évident de savoir à quoi il sert.

Ensuite, cet utilisateur obtient uniquement des perms sur les bons dossiers, dans votre cas, C: \ Data \ IronElements \ Upload \ AUMData. C'est aussi un bon moyen de limiter l'accès à la base de données - créez une connexion pour cet utilisateur spécifique en SQL avec un minimum de privilèges.

1

Accédez au pool d'applications que vous utilisez pour cette application et remplacez son identité par "Service réseau". J'ai rencontré le même problème et j'ai corrigé de la même manière