begin process at 2012 02 13 11:20:25
  Trouver un code source :
 
dans
 
Accueil > 

Tutoriels

 > 

Astuces

 > [ASP/ASP.NET][GENERAL] ECRITURE DANS DES FICHIERS, BASES DE DONNÉES : LES AUTORISATIONS D'ÉCRITURE DANS DES DOSSIERS

[ASP/ASP.NET][GENERAL] ECRITURE DANS DES FICHIERS, BASES DE DONNÉES : LES AUTORISATIONS D'ÉCRITURE DANS DES DOSSIERS


 Information sur le tutoriel

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10


 Description

Suite à de trop nombreuses questions sur le forum, voici l'explication la plus simple possible sur les utilisateurs windows à autoriser pour écrire dans un fichier ou une base de données.

Tutorial

Lecture & Ecriture en ASP / ASP.NET : Une erreur courante

Voilà un petit tutorial pour ASP3 et ASP.NET sur les utilisateurs Windows à autoriser pour pouvoir écrire dans un fichier ou un dossier. Cela explique également comment résoudre certaines erreurs comme "Vous devez utiliser une requête qui peut être mise à jour" et d'autres erreurs dues aux droits d'écriture sur les fichiers.

Principe Général

Partons avec quelques notions de base :

  • Lorsque qu'un poste client se connecte à un site hébergé sur IIS, il est associé au compte d'utilisateur anonyme d’IIS qui est normalement nommé IUSR_NOMDUSERVEUR.
  • Toutes les opérations faites par les pages vues par ce "client" s'exécutent dans le processus d'IIS mais pour Windows, l'utilisateur qui effectue ces opérations s'appelle toujours IUSR_NOMDUSERVEUR.
  • Le reste des opérations effectuées par IIS (autres qu'exécuter des pages web) sont représentés dans Windows par l'utilisateur IWAM_NOMDUSERVEUR.

Voilà qui devrait suffire...

Pour l'ASP, L'accès aux fichiers etdossiers

  • L'ASP est exécuté sous forme d'une "application" ISAPI par IIS. Donc toutes les pages ASP qui sont sur le serveur sont exécutées par IUSR_NOMDUSERVEUR.
  • C'est là que ça devient intéressant : Dès qu'il s'agit de lire ou d'écrire dans un répertoire, c'est IUSR _NOMDUSERVEUR qui le fait !! Donc si une de vos pages ASP utilise le FSO pour écrire dans un fichier : c'est IUSR_NOMDUSERVEUR qui doit pouvoir le faire, sinon vous aurez droit à une belle erreur. Pareil pour écrire dans une base Access: c'est IUSR_NOMDUSERVEUR qui le fait à la place de vos pages.

Donc pour pouvoir écrire dans un fichier, une base de données, pour pouvoircréer un répertoire ou des dossiers, il faut :

  1. Sélectionner le dossier ou le fichier que vous voulez autoriser.
  2. Faire Clique Droit, "Propriétés", puis aller dans l'onglet "Sécurité" (les autorisations de fichiers simples doivent être désactivées)
  3. Ajouter IUSR_NOMDUSERVEUR aux utilisateurs, avec les droits que vous voulez accorder à vos pages ASP.

Pour l'ASP.NET, L'accès aux fichiers et dossiers

  • L'ASP.NET est compilé et interprété par le Framework .Net. Celui-ci est représenté auprès du système d'exploitation par l'utilisateur ASPNET (sans le point entre les deux !) ou l’utilisateur "Services Réseaux" sous Windows 2003.
  • Donc Dès qu'il s'agit de lire ou d'écrire dans un répertoire, c'est ASPNET qui le fait !! Donc si vos pages écrivent à un moment dans un fichier XML ou dans une base Access par exemple, c'est ASPNET qui doit pouvoir le faire, sinon vous aurez droit à une belle erreur !!

Donc pour pouvoir écrire dans un fichier, une base de données, pour pouvoircréer un répertoire ou des dossiers, il faut :

  1. Sélectionner le dossier ou le fichier que vous voulez autoriser.
  2. Faire Clique Droit, "Propriétés", puis aller dans l'onglet "Sécurité" (les autorisations de fichiers simples doivent être désactivées)
  3. Ajouter ASPNET aux utilisateurs, avec les droits que vous voulez accorder à vos pages ASP.NET sur ce dossier ou fichier.

 

Vous pouvez également le télécharger ici en format pdf.

J'ai juste fait ce petit tutorial pour éviter de répondretoutes les semaines aux mêmes questions sur des problèmes d'écriture de fichiers...Et puis dans l'espoir que ça puisse servir à quelqu'un ! :)

Nurgle
http://nurgle.blogspot.com

 

 Historique

09 juin 2005 22:33:10 :
correction de petites fautes de frappe :p
10 juin 2005 12:03:00 :
Ajout d'explications...
10 juin 2005 21:00:10 :
:p :p
27 juillet 2005 21:36:34 :
modif...
10 septembre 2005 19:03:58 :
...
17 janvier 2006 18:13:04 :
ptite mise à jour (espérons que ça marche cette fois çi !)
22 février 2006 16:58:01 :
arg, cette FreeTextBox va me rendre fou :(
24 février 2006 17:33:56 :
et encore...
24 février 2006 17:35:41 :
et encore...

Commentaires

Commentaire de peroxyde le 09/08/2006 16:25:51

j'étais bloqué depuis deux jours sur l'utilisation de ma base access par une application WEB. Cet article m'a débloqué.

Commentaire de scottmat le 31/10/2006 17:36:00

Bonjours,
J’ai petit souci, j'ai suivi à la lettre les instructions mais cela ne change rien pour moi malheureusement.
J'ai un petit formulaire qui s'enregistre dans un fichier XML après validation, donc j'ai ajouté ASPNET comme le mentionne ce tutorial, donner même le 'contrôle total' et il m'affiche toujours la même l'erreur :

Détails de l'exception: System.UnauthorizedAccessException: L'accès au chemin d'accès ??\suggest.XML? est refusé.

ASP.NET n'est pas autorisé à accéder à la ressource demandée. Accordez des droits d'accès à la ressource pour l'identité de la demande ASP.NET. ASP.NET a une identité de processus de base (en règle générale {MACHINE}\ASPNET sur IIS 5 ou Network Service sur IIS 6) qui est utilisée si l'application n'emprunte pas d'identité. Si l'application emprunte une identité via <identity impersonate="true"/>, l'identité sera l'utilisateur anonyme (en règle générale IUSR_MACHINENAME) ou l'utilisateur de la demande authentifié.

Pour accorder un 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é. Sélectionnez le compte ASP.NET et activez les cases à cocher correspondant à l'accès souhaité.

Erreur source:

  

  

Ligne 142 :

  

Ligne 143 :        doc.DocumentElement.AppendChild(mElement)

  

Ligne 144 :        doc.Save(Server.MapPath("suggest.XML"))

Commentaire de Chronolode le 26/02/2007 17:00:11

je veus ecrir dans un fichier xml j'ai suivi les indications mais lorsque je clique avec le button droit sur mon fichier xml dans  "Propriétés", je ne trouve pas  l'onglet "Sécurité" quelqu'un m'aide je suis bloqué

Commentaire de Nurgle le 26/02/2007 17:09:03 administrateur CS

Chronolode > ça veut dire que les autorisations de fichiers simples sont actives, il faut les désactiver : Dans les Options des dossiers, le 2ème onglet, décoche la case à cocher (tout en bas si je me souviens bien) "utiliser le partage de fichier simple"...

Commentaire de Chronolode le 28/02/2007 21:29:58

Merci beaucoup Nurgle
                     ça marche

Commentaire de bhdih le 08/03/2007 16:59:39

Bonjour,
ça n'a rien changé pour moi ! Mais où doit on utiliser ce mot IUSR_NOMDUSERVEUR dans le code asp ??
Aidez moi, je n'ai rien saisi!!!
Merci.

Commentaire de Nurgle le 08/03/2007 19:53:45 administrateur CS

bhdih > tu ne doit pas l'utiliser dans le code ASP ! C'est le nom d'utilisateur de IIS 5, si tu codes sous Windows 2000 ou XP et que tu as une erreur d'accès aux fichiers ou de lecture de base données, c'est probablement parce que cet utilisateur là n'a pas les droits sur le fichier ou la base en question (par défaut cet utilisateur windows n'a aucun droit :p !) donc il faut lui rajouter en faisant comme c'est indiqué plus haut...
Mais il n'y a rien à changé dans le code ASP ! :)

Commentaire de Dr_shaman le 18/09/2007 09:29:35

bonjour je sui perdu je compren rien je vien d'instaler iis 5 et manager iis6 XP(en passen Visual 2003 ne peu plus débuguer ASP.net)j'ai fais un formulair tout simple pour utiliser une dll (je souette ouvrire un fichier exel et l'exporter en pdf; la seul solution que j'ai trouver c'est d'utiliser pdfconverter et sa dll.mai qu'an je fais :

using PDFCreator;

namespace Convertion_excel_pdf
{
/// <summary>
/// Description résumée de WebForm1.
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label4;
clsPDFCreatorClass pdf;

private void Page_Load(object sender, System.EventArgs e)
{
pdf = new clsPDFCreatorClass();//c'est cette ligne qui marche pas.
}
}
}




jéxecute sans le débugue et j'ai le message d'erreur:

"La récupération de la fabrique de classe COM pour le composant avec le CLSID {3A619AE4-50EC-46C8-B19E-BE8F50DD2F22} a échoué en raison de l'erreur suivante : 80070005.
Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

Détails de l'exception: System.UnauthorizedAccessException: La récupération de la fabrique de classe COM pour le composant avec le CLSID {3A619AE4-50EC-46C8-B19E-BE8F50DD2F22} a échoué en raison de l'erreur suivante : 80070005.

ASP.NET n'est pas autorisé à accéder à la ressource demandée. Accordez des droits d'accès à la ressource pour l'identité de la demande ASP.NET. ASP.NET a une identité de processus de base (en règle générale {MACHINE}\ASPNET sur IIS 5 ou Network Service sur IIS 6) qui est utilisée si l'application n'emprunte pas d'identité. Si l'application emprunte une identité via <identity impersonate="true"/>, l'identité sera l'utilisateur anonyme (en règle générale IUSR_MACHINENAME) ou l'utilisateur de la demande authentifié.

Pour accorder un 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é. Sélectionnez le compte ASP.NET et activez les cases à cocher correspondant à l'accès souhaité."


je c'est pas ci il sagie de la même chose mais moi j'ai ajouter l'utilisateur ASPNET avec un controle total (j'ai mie tout les utilisateur avec un controle total) sur le fichier wwwroot et sur les fichiers de mon programme.

et sa marche toujour pas!!!

si vous aver une idéé j'atent avec impatience.merci d'avence

Commentaire de Dr_shaman le 27/09/2007 16:14:21

DSL je sui en boulet mais je ne conpren pas j'est mis les droi a aspnet(controle total)(j'ai mi controle total a tout le monde)
et je rame et je rame et je rame pour trouver comment modifier un fichier.
dabord quel fichier? sa marche pas quand je fais un new! sa ne crai pas un fichier!
c'est quand j'accede a la dll que sa marche pas?

merci.
(je suis admin sous XPpro).

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,016 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales