IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

DirectoryInfo => GetFiles = System.IO.__Error.WinIOError


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut DirectoryInfo => GetFiles = System.IO.__Error.WinIOError
    Bonjour,

    Mon collègue a un petit soucis dans son programme que nous n'arrivons pas à résoudre.

    Le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim di As New DirectoryInfo(savePath)
    For Each f As FileInfo In di.GetFiles("*.xls")
    plante à la ligne 2 sur di.GetFiles avec cette erreur :

    StackTrace : at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
    at System.IO.FileSystemEnumerableIterator`1.CommonInit()
    at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler)
    at System.IO.DirectoryInfo.InternalGetFiles(String searchPattern, SearchOption searchOption)
    at System.IO.DirectoryInfo.GetFiles(String searchPattern)
    at SL0025VB.Main.main(String[] args)
    Source : mscorlib
    mais chose vraiment spéciale, il ne plante pas tout le temps. Si je le lance une fois, j'ai l'erreur et lors du deuxième lancement ça passe bien.

    Le chemin vers le dossier stocké dans savePath est un chemin réseau vers notre serveur de fichier, sous le forme \\filesrv\data\RendezVousFichesB\ et nous nous sommes assuré qu'il était disponible à partir de la machine exécutant le logiciel et que notre utilisateur avait tous les droits sur ce dossier avant de le lancer.

    Nous avons évidement cherché sur internet mais nous n'avons rien trouvé de similaire

    Nous sommes donc preneur de toutes idées.

    Merci d'avance.

  2. #2
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Aucun problèmes de droits sur le dossier ? Ou est-il en réseau ?

  3. #3
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Excuse j'ai édité mon message juste avant que tu ne répondes pour ajouter :
    Le chemin vers le dossier stocké dans savePath est un chemin réseau vers notre serveur de fichier, sous le forme \\filesrv\data\RendezVousFichesB\ et nous nous sommes assuré qu'il était disponible à partir de la machine exécutant le logiciel et que notre utilisateur avait tous les droits sur ce dossier avant de le lancer.
    Donc non, pas de problème de droit et oui il est en réseau.
    Mais chose bizarre, ça fonctionne très bien au deuxième lancement de l'application.

  4. #4
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Mmmmmh, parmis vos .xls vous n'en avez pas avec un nom (très très) long, qui donnerait un path supérieur au MAX_PATH ?

    Dans le for each, vous ne faîtes pas de traitement de suppression d'.xls ?

    Et le Message de l'exception dit quoi ?

  5. #5
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Dans la boucle on déplace les fichiers dans un autre répertoire mais ça plante avant ce déplacement.
    Le message est :
    Message : Le chemin réseau n'a pas été trouvé.

    StackTrace : at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
    at System.IO.FileSystemEnumerableIterator`1.CommonInit()
    at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler)
    at System.IO.DirectoryInfo.InternalGetFiles(String searchPattern, SearchOption searchOption)
    at System.IO.DirectoryInfo.GetFiles(String searchPattern)
    at SL0025VB.Main.main(String[] args)

    Source : mscorlib
    alors qu'il existe bien vu que nous avons ouvert un explorateur avec le dit chemin sur le serveur exécutant le programme. De plus il ne s'agit pas d'un lecteur réseau, on donne directement le chemin complet.

    Ce qui est très embêtant, c'est que cette erreur ne se fait pas tous le temps, du coups nous avons vraiment du mal à l'isoler et à la comprendre...

    P.S. : Merci de t’intéresser au problème.

  6. #6
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Citation Envoyé par Sankasssss Voir le message
    Dans la boucle on déplace les fichiers dans un autre répertoire mais ça plante avant ce déplacement.
    Le fait de modifier la liste des .xls durant un for each sur cette dernière, n'altère-t-il pas le traitement ?
    Oui j'ai bien dit le traitement, car en théorie, ça ne génère pas d'exception ... (Sauf si peut-être que dans notre cas ça nous donne un chemin réseau non valide pour avoir sauté un item, ou être repassé sur un item qui a déjà été déplacé ...)
    Sans aucunes garanties, mais peut-être qu'un While serait plus convenant ?


    Sinon, est-ce que l'appli a été testé sur d'autres posts ? (Le terme aléatoire me rappelle que mon poste bien que je sois dans le même groupe IIS que mes collègues me fait quelques réprimandes de sécurité quand il s'agit d'accéder à des fichiers sur le serveur ...)

    Ps : Pas de soucis, c'est lundi matin, j'ai du mal à émerger et pas l'envie de replonger dans mon code ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation de System.IO.Directory.GetFiles
    Par Claude_Azoulai dans le forum VB.NET
    Réponses: 4
    Dernier message: 02/11/2011, 11h22
  2. Permissions sur System.IO.Directory.GetFiles
    Par Papy214 dans le forum C#
    Réponses: 2
    Dernier message: 24/02/2009, 21h12
  3. DirectoryInfo.GetFiles() et filtres multiples
    Par PoZZyX dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/10/2007, 22h19
  4. Réponses: 2
    Dernier message: 01/12/2006, 19h55
  5. [C#] DirectoryInfo et rep system
    Par BoeufBrocoli dans le forum Windows Forms
    Réponses: 9
    Dernier message: 28/05/2004, 13h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo