none
Téléchargement d'un fichier zip refusé sur IIS 6 RRS feed

  • Question

  • Bonjour,

    Lorsque mes utilisateurs cliquent sur un lien vers un fichier zip, ils ont message leur indiquant qu'ils n'ont pas l'autorisation d'accéder à ce fichier. Et pourtant les mêmes utilisateurs peuvent parfaitement télécharger des fichiers DOC, DOCX, XLS et XLSX situés exactement dans le même dossier !

    Mieux lorsque moi je me connecte via un VPN, je n'ai aucun problème. Je pense qu'il devrait s'agir d'un problème de droit et d'identification de l'utilisateur qui demande le téléchargement, mais je n'arrive pas à résoudre le problème.

    Si quelqu'un pouvait m'aider, cela m'arrangerait bien.

    Merci d'avance,

    Alain

    mardi 2 octobre 2012 17:21

Réponses

  • Bonjour,

    Aucune des solutions proposées ne résoud le problème, mais j'ai fini par trouver une solution qui certes n'est pas intellectuellement satisfaisante mais a le mérite de faire disparaître le problème.

    D'abord exposé des faits :

    Au sein d'une application Web en ASP.NET, C#, des fichiers Word et Excel sont générés par programmation dans un dossier. Ces fichiers héritent des droits du dossier dans lequel ils sont déposés, c'est à dire Modification et sont téléchargés par les internautes sur clic un lien.

    Pour permettre à ces même internautes de télécharger d'un coup tous les fichiers, je les ai assemblés en utilisant le composant DotNetZip (Ionic.Zip.dll).

    Le problème maintenant :

    Les internautes se voient refusé le téléchargement lors du clic sur le lien avec un message leur indiquant qu'il n'ont pas les autorisations nécessaires. Vérifications faites, les fichiers zip générés n'héritent d'aucun des droits définis sur le dossier au contraire des fichiers Word et Excel !

    Solution trouvée :

    Définir explicitement un droit sur le fichier juste après sa génération.

                string utilisateur = @"Mondomaine\MonUser";
                FileSecurity fSecurity = File.GetAccessControl(fichier);

                // Ajouter les droits au fichier
                fSecurity.AddAccessRule(new FileSystemAccessRule(utilisateur, FileSystemRights.FullControl, AccessControlType.Allow));

                // Enregitrer les droits
                File.SetAccessControl(fichier, fSecurity);

    Pourquoi ce n'est pas intellectuellement satisfaisant ?

    Parce que d'une part je ne sais toujours pas pourquoi les zip générés n'héritent pas des droits et parce que la solution est conjoncturelle et qu'elle passe par dessus l'infrastructure qui héberge l'application. En d'autre termes cela s'est produit pour les zip, rien ne dit que cela ne se reproduira pas pour d'autres fichiers.

    Merci à tous ceux qui ont bien voulu se pencher sur mon problème et à bientôt pour de nouvelles aventures ;-)

    Alain

    vendredi 5 octobre 2012 13:51

Toutes les réponses

  • Bonsoir,

    Il suffit d'associer l'extension .zip au mime type "application/x-zip-compressed" dans IIS.


    Merci de valider par "Proposer comme réponse" si celle-ci répond à votre demande !


    • Modifié Lyamine mardi 2 octobre 2012 20:21
    mardi 2 octobre 2012 18:49
  • Bonsoir,

    Non ce n'est pas cela, c'est bien une question de droits en effet le groupe IIS_IUSERS n'a que le droit Parcourir sur le fichier zip alors que le même groupe a les droits modifications sur le dossier dans lequel se crée le zip.

    Le fichier zip n'hérite pas des droits du dossier dans lequel il est créé alors que les autres fichiers (Word, Excel, TEXTE, ...) eux, héritent des droits.

    Cordialement,

    Alain

    mardi 2 octobre 2012 20:23
  • Bonsoir,

    Non ce n'est pas cela, c'est bien une question de droits en effet le groupe IIS_IUSERS n'a que le droit Parcourir sur le fichier zip alors que le même groupe a les droits modifications sur le dossier dans lequel se crée le zip.

    Le fichier zip n'hérite pas des droits du dossier dans lequel il est créé alors que les autres fichiers (Word, Excel, TEXTE, ...) eux, héritent des droits.

    Cordialement,

    Alain

    Bonsoir,

    Vous êtes en contrôleur de domaine je suppose ?

    Avez-vous essayé de mettre le groupe "Utilisateur du domaine" par exemple avec tous les droits sur ce répertoire ?

    Ensuite quelle message affiche IIS sur le navigateur ?


    Merci de valider par "Proposer comme réponse" si celle-ci répond à votre demande !

    mardi 2 octobre 2012 22:02
  • Bonjour,

    Non je ne suis pas contrôleur de domaine, seulement utilisateur faisant partie des administrateurs.

    Les droits sur le dossier étaient Modification sur le dossier à Tout le monde, mais à la création du fichier il ne semble pas hériter du droit. Du coup j'ai pallié le problème en fixant le droit lecture dans mon code après sa création.

    Cordialement,

    Alain

    mercredi 3 octobre 2012 06:25
  • Bonjour,

    Juste pour test, pouvez-vous supprimer l'héritage et mettre le groupe tout le monde qui a tous les droits ? juste pour voir si ça corrige le problème sans votre code. Cela m'intrigue.

     

    Cordialement


    Merci de valider par "Proposer comme réponse" si celle-ci répond à votre demande !

    mercredi 3 octobre 2012 06:36
  • Bonsoir,

    Il me semble que j'ai déjà essayé, mais je vais essayer de nouveau.

    Cordialement,

    Alain

    mercredi 3 octobre 2012 19:35
  • Bonjour,

    Est-ce que vous avez testé les solutions proposées ? Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.

    Cordialement,

    Aurel


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    vendredi 5 octobre 2012 07:16
  • Bonjour,

    Aucune des solutions proposées ne résoud le problème, mais j'ai fini par trouver une solution qui certes n'est pas intellectuellement satisfaisante mais a le mérite de faire disparaître le problème.

    D'abord exposé des faits :

    Au sein d'une application Web en ASP.NET, C#, des fichiers Word et Excel sont générés par programmation dans un dossier. Ces fichiers héritent des droits du dossier dans lequel ils sont déposés, c'est à dire Modification et sont téléchargés par les internautes sur clic un lien.

    Pour permettre à ces même internautes de télécharger d'un coup tous les fichiers, je les ai assemblés en utilisant le composant DotNetZip (Ionic.Zip.dll).

    Le problème maintenant :

    Les internautes se voient refusé le téléchargement lors du clic sur le lien avec un message leur indiquant qu'il n'ont pas les autorisations nécessaires. Vérifications faites, les fichiers zip générés n'héritent d'aucun des droits définis sur le dossier au contraire des fichiers Word et Excel !

    Solution trouvée :

    Définir explicitement un droit sur le fichier juste après sa génération.

                string utilisateur = @"Mondomaine\MonUser";
                FileSecurity fSecurity = File.GetAccessControl(fichier);

                // Ajouter les droits au fichier
                fSecurity.AddAccessRule(new FileSystemAccessRule(utilisateur, FileSystemRights.FullControl, AccessControlType.Allow));

                // Enregitrer les droits
                File.SetAccessControl(fichier, fSecurity);

    Pourquoi ce n'est pas intellectuellement satisfaisant ?

    Parce que d'une part je ne sais toujours pas pourquoi les zip générés n'héritent pas des droits et parce que la solution est conjoncturelle et qu'elle passe par dessus l'infrastructure qui héberge l'application. En d'autre termes cela s'est produit pour les zip, rien ne dit que cela ne se reproduira pas pour d'autres fichiers.

    Merci à tous ceux qui ont bien voulu se pencher sur mon problème et à bientôt pour de nouvelles aventures ;-)

    Alain

    vendredi 5 octobre 2012 13:51