none
accès fichier refusé depuis IIS RRS feed

  • Question

  • Bonjour,

    j'ai changer dans mon développement la façon de débogué mon application web de "Cassini" du visual studio 2010 à "IIS 7.5". avec les paramêtre suivant:

    dans mon projet j'utilise un fichier Excel que l'application ouvre et extrait des donnée de celle-ci.

    en executant, une exception se déclance :

    L'accès au chemin d'accès '\FichierExempleFichierEntrée5Etoiles.xlsx' est refusé.

    elle se déclanche en executant cette ligne :

    File.Copy(Server.MapPath("~\\Metier\\Fichier\\ExempleFichierEntrée5Etoiles.xlsx"),
                    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\FichierExempleFichierEntrée5Etoiles.xlsx");

    je signale que cette exception ne se déclanche pas quand je l'eecute avec "Cassini"

    est ce qu'il y a quelqu'un qui peut aider à résoudre mon problème??

    merci d'avance.



    • Modifié ahmedmahdi jeudi 26 novembre 2015 12:28 orthographe
    jeudi 14 novembre 2013 14:03

Réponses

  • Bonjour,

    Votre problème réside dans le fait que "cassini" s'exécute sous le compte de l'utilisateur en cours (ou administrateur si vous avez lancé votre VS en mode administrateur) donc vous avez certains accès à vos fichiers.

    Sous IIS une application s'exécute sous l'identité définie dans le pool d'application auquel appartient le site : http://www.iis.net/learn/manage/configuring-security/application-pool-identities . Dans votre cas votre dossier ne doit autoriser ces utilisateurs en question, donc soit vous ajoutez des droits pour "IIS AppPool\DefaultAppPool" dans le cas du pool par défaut, ou plus largement le groupe "IIS_IUSRS" qui regroupe tous les utilisateurs IIS.

    Vous pouvez également changer l'identité du pool (dans les paramètres avancé), mais attention toutes les applications qui fonctionnent sous ce pool auront toutes les mêmes droits.

    La ligne

    <identity impersonate="true" userName="Administrateur" password="Mot de passe"/>

    indiquée par Said enclenche l'impersonisation c'est à dire que l'application va s'exécuter "en tant que" l'identité fournie. Toutefois personnellement je ne conseillerais pas d'utiliser l'identité "Administrateur", pour des raisons de sécurité évidente.

    Cordialement,


    Yan Grenier

    • Marqué comme réponse ahmedmahdi jeudi 21 novembre 2013 12:39
    vendredi 15 novembre 2013 08:58
  • j'ai changer créer une autre racine et j'ai donné les droit.

    maintenant ça marche très bien.

    • Marqué comme réponse ahmedmahdi jeudi 21 novembre 2013 12:38
    jeudi 21 novembre 2013 12:34

Toutes les réponses

  • Bonjour

    Il faut ajouter dans le fichier web.config la ligne suivante ;

    <system.web>

     <httpRuntime maxRequestLength="8192" />
        <identity impersonate="true" userName="Administrateur" password="Mot de passe"/>


    Tawory SOLUTIONS
    www.tawory.com
    www.adidov.com
    said@tawory.com

    jeudi 14 novembre 2013 19:51
  • a quoi ils correspondent ces 2 lignes??

    je ne comprend pas leurs intérêt

    vendredi 15 novembre 2013 08:11
  • Bonjour,

    Votre problème réside dans le fait que "cassini" s'exécute sous le compte de l'utilisateur en cours (ou administrateur si vous avez lancé votre VS en mode administrateur) donc vous avez certains accès à vos fichiers.

    Sous IIS une application s'exécute sous l'identité définie dans le pool d'application auquel appartient le site : http://www.iis.net/learn/manage/configuring-security/application-pool-identities . Dans votre cas votre dossier ne doit autoriser ces utilisateurs en question, donc soit vous ajoutez des droits pour "IIS AppPool\DefaultAppPool" dans le cas du pool par défaut, ou plus largement le groupe "IIS_IUSRS" qui regroupe tous les utilisateurs IIS.

    Vous pouvez également changer l'identité du pool (dans les paramètres avancé), mais attention toutes les applications qui fonctionnent sous ce pool auront toutes les mêmes droits.

    La ligne

    <identity impersonate="true" userName="Administrateur" password="Mot de passe"/>

    indiquée par Said enclenche l'impersonisation c'est à dire que l'application va s'exécuter "en tant que" l'identité fournie. Toutefois personnellement je ne conseillerais pas d'utiliser l'identité "Administrateur", pour des raisons de sécurité évidente.

    Cordialement,


    Yan Grenier

    • Marqué comme réponse ahmedmahdi jeudi 21 novembre 2013 12:39
    vendredi 15 novembre 2013 08:58
  • merci pour votre aide.

    En effet j'ai ajouté cette ligne avec mon compte windows qui est sous le domaine de mon entreprise et a les droit d'administrateur, mais j'ai eu une erreur sur cette ligne que j'ai ajouté dans le web.config

    vendredi 15 novembre 2013 09:28
  • Attention l'impersonisation nécessite le nom complet dans le cas d'un domaine : "domaine\utilisateur".

    Si vous utilisez un compte local ".\utilisateur" doit suffire.

    Cordialement,


    Yan Grenier

    • Marqué comme réponse ahmedmahdi jeudi 21 novembre 2013 12:39
    • Non marqué comme réponse ahmedmahdi jeudi 21 novembre 2013 12:39
    vendredi 15 novembre 2013 09:30
  • oui c'est ce que j'ai fait :

    domaine\nom d'utilisateur


    j'ai essayé aussi les droits de "IIS_IUSRS". il m'affiche toujours l'erreur du début
    • Modifié ahmedmahdi vendredi 15 novembre 2013 10:00
    vendredi 15 novembre 2013 09:51
  • Désolé, mais j'utilise rarement l'impersonisation (emprunt d'identité en français), il y a une histoire de droit pour autoriser le processus à emprunter une identité.

    Visiter le lien suivant : http://www.techulator.com/resources/5237-how-configure-website-use-impersonation.aspx il donne toute la procédure notamment le processmodel du pool d'application pour permettre l'emprunt.

    Cordialement,


    Yan Grenier

    vendredi 15 novembre 2013 10:07
  • j'ai réussit à faire marché l'application sans crache en modifiant directement la prrpriété du pool dans IIS en mon nom d'utilisateur, mais une des fonctionnalités (l'authetification windows) ne marche plus.

    la il reste toujours figé sur mon nom d'utilisateur même si je change une autre session.

    vendredi 15 novembre 2013 12:41
  • Je ne saisi pas: vous utilisiez l'authentification Windows au niveau de votre site avant de  changer l'identité du pool ?

    Si c'est le cas c'est peut-être normal, car si l'utilisateur du pool d'application à les droits demandés, alors IIS n'a aucune raison de demander une authentification ! L'authentification est demandée uniquement ls'il y a besoin.

    S'il s'agit du fait que voulez utiliser l'authentification Windows et qu'elle ne fonctionne pas : vérifiez que l'authentification Windows est active dans IIS > Votre Site > Authentification. Il y a la liste des fournisseurs d'authentification, donc celui de Windows à activer.

    Mais attention ma réflexion précédente est toujours de mise.

    Cordialement,


    Yan Grenier

    vendredi 15 novembre 2013 12:53
  • Donc si j'ai bien compris, je doit restaurer les paramètres par défaut.

    si je fait ça, j'aurais toujours le même problème qu'au départ

    vendredi 15 novembre 2013 13:16
  • Mais la question est : L'authentification Windows était-elle active et fonctionnelle au départ ?

    Car normalement l'authentification Windows provoque un emprunt d'identité du site (a vérifier car du coup je commence à douter). Donc normalement si vous êtes connecté via l'authentification Windows et que vous avez le message d'erreur initial c'est que l'utilisateur en cours n'est pas autorisé à lire le fichier en question.

    Si l'authentification Windows est activé, vérifier qu'il n'y a pas d'autre fournisseur d'authentification activé  notamment le "anonyme" pour forcer l'authentification.

    Après là je sèche c'est une situation que je n'ai jamais rencontré. Il faudrait vérifier le comportement de l'authentification Windows couplé à un pool qui à une identité d'un compte utilisateur.

    Peut-être tout remettre comme avant et autoriser tout le monde à accéder au fichier qui vous posais problème.

    Cordialement,


    Yan Grenier

    vendredi 15 novembre 2013 13:27
  • merci pour ton aide.

    juste une question :

    quelle valeur doit prendre "Idendity" du pool pour que l'application est les droit de l'utilisateur logué??

    vendredi 15 novembre 2013 14:29
  • De rien.

    De quel utilisateur loggué vous parlez ? Celui de votre session Windows en cours ?

    Si c'est de cela que vous parlez c'est impossible de l'indiquer à IIS puisqu'il est un service qui fonctionne en dehors d'une session Windows. C'est bien pour cela qu'on doit spécifier une identité afin qu'il puisse travailler sinon il n'aurait aucun droit sur le système.

    Cordialement,


    Yan Grenier

    vendredi 15 novembre 2013 15:25
  • ok.

    donc comment on fait pour ouvrir et lire un fichier (dans mon cas Excel) à partir d'un emplacement un pc d'un site web.

    vendredi 15 novembre 2013 15:34
  • Bin comme je l'ai dis au départ :

    "Dans votre cas votre dossier ne doit autoriser ces utilisateurs en question, donc soit vous ajoutez des droits pour "IIS AppPool\DefaultAppPool" dans le cas du pool par défaut, ou plus largement le groupe "IIS_IUSRS" qui regroupe tous les utilisateurs IIS."

    Le but est donner les droits d'accès à votre application au dossier contenant votre fichier.

    Ou alors vous déplacez votre fichier dans un endroit dont le site Web à accès, par exemple un dossier partagé où vous appliquez les droits pour que vous puissiez le modifier, et les droits à l'application pour qu'elle puisse le lire (ou le modifier si c'est ce qu'elle fait).

    Généralement on privilégie la dernière option.

    Cordialement,


    Yan Grenier

    vendredi 15 novembre 2013 15:44
  • je n'ai pas réussit a donner les droit à ni à "IIS_IUSRS", ni au pool.

    Est ce qu'il existe un dossier qui existe dans tous les ordinateur (poste/serveur) dans lequel "IIS_IUSRS" ou un pool pourrait au moins pouvoir ouvrir et lire un fichier??

    lundi 18 novembre 2013 08:31
  • Bonjour

    Avez-vous un message d'erreur quand vous essayez de donner les droits à l’IIS_IUSR?

    Cordialement,



    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.


    • Modifié Aurel Bera lundi 18 novembre 2013 12:51
    lundi 18 novembre 2013 12:48
  • oui

    j'ai eu des erreurs pour l'assimilation des droits

    lundi 18 novembre 2013 13:28
  • Veuillez regarder cet article:

    http://technet.microsoft.com/fr-fr/library/cc730708(v=ws.10).aspx

    En plus assurez-vous que les droits sur le répertoire sont bien appliquées.

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.


    • Modifié Aurel Bera mardi 19 novembre 2013 11:28
    mardi 19 novembre 2013 11:25
  • merci pour cet article

    je le suis entrain de le lire et je te dirai mes retours.

    merci encore

    mercredi 20 novembre 2013 10:34
  • j'ai changer créer une autre racine et j'ai donné les droit.

    maintenant ça marche très bien.

    • Marqué comme réponse ahmedmahdi jeudi 21 novembre 2013 12:38
    jeudi 21 novembre 2013 12:34