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

C# Discussion :

FtpClient test chemin incomplet avec Ftp.ListDirectory


Sujet :

C#

  1. #1
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 935
    Points : 2 014
    Points
    2 014
    Par défaut FtpClient test chemin incomplet avec Ftp.ListDirectory
    bonjour

    Pour tester la bonne connexion à un serveur FTP j'utilise ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                FtpClient ftc = new FtpClient();
                String ListRepertoires = await ftc.ListDirectoryServeur(textBoxLogin.Text, textBoxPass.Text, textBoxHostName.Text, (int)numericUpDownFTP.Value, checkBoxSSLactif.Checked, FtpClient.ModePassif.Actif);
                if (ListRepertoires != "erreur!")
                {
                    String reponse = "Les répertoires accessibles sont : \r\n" + ListRepertoires;
                    MessageBox.Show(reponse);
                }
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    public async Task<string> ListDirectoryServeur(String Login, String Pass, String HostName, int Port, bool SSL, bool ModePassif)
            {           
                   try
                   {
                    var myUri = new Uri("ftp://" + HostName);
                    var builder = new UriBuilder(myUri);
                    builder.Port = Port;
     
                    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(builder.Uri.ToString()); 
                    request.Method = WebRequestMethods.Ftp.ListDirectory;
                    request.EnableSsl = (bool)SSL;
                    request.UsePassive = (bool)ModePassif;
                    request.KeepAlive = false;
     
                    SecureString securePwd = new SecureString();
                    securePwd = new NetworkCredential("", Pass).SecurePassword;
                    request.Credentials = new NetworkCredential(Login, securePwd);
     
                    ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(myCertificateValidation);
     
                    string ReponseFTP = null;
     
                    using (WebResponse response = await request.GetResponseAsync())
                    {
                           using (Stream responseStream = response.GetResponseStream())
                           {
                               StreamReader reader = new StreamReader(responseStream);
     
                               ReponseFTP = reader.ReadToEnd();
                           }
                    }
     
                    return ReponseFTP;
     
                    }
                    catch (Exception Ex)
                    {
                       MessageBox.Show(Ex.Message.ToString(), "Erreur !", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                       return "erreur!";
                    }
     
     
            }
     
     
     
     
            /***************************************************************************************/
            //Fonction pour accepter le certificat SSL
            private bool myCertificateValidation(Object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors Errors)
            {
                return true;
            }
     
     
     
            public static class ModeSSL
            {
                public const bool Actif = true;
                public const bool Inactif = false;
            }
     
            public static class ModePassif
            {
                public const bool Actif = true;
                public const bool Inactif = false;
            }
    Si je tape un chemin correctement, exemple : service.monsite.fr/RepertoireDeTravail cela fonctionne bien, ca me liste le contenu du répertoire RepertoireDeTravail
    Si je tape le chemn de base (service.monsite.fr) ça me donne bien "RepertoireDeTravail"
    mais si je tape le nom du répertoir avec une erreur de syntaxe (majuscule à la place d'une minuscule, lettre en plus ou en moins) par exemple service.monsite.fr/REPERTOIREDETRAVAIL

    Alors je reçois "" en retour. en d'autres termes il y a erreur puisqu'il n'a pas pu se connecter au répertoire inexistant "REPERTOIREDETRAVAIL" mais il me retourne rien, comme s'il avait réussi à se connecter au répertoire mais qu'il était vide ; ce qui est faux et donc fort gênant...

    Comment puis-je faire pour détecter que j'ai mal tapé le nom du répertoire ?
    J'ai essayé de remplacer WebRequestMethods.Ftp.ListDirectory par WebRequestMethods.Ftp.PrintWorkingDirectory; pour pouvoir vérifier que je suis bien arrivé dans le répertoire que j'ai tapé et pas à la racine mais dans tous les cas ça me retourne "".

    Question subsidiaire : pas moyens de comprendre comment récupérer tous les messages envoyés au serveur et retournés par le serveur ; tous ces messages que l'on voit défiler dans la console de tout bon client FTP, filezilla par exemple.

    Merci
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  2. #2
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 935
    Points : 2 014
    Points
    2 014
    Par défaut
    j'ai tenté un autre truc lui aussi "faux"

    Plutôt que de retourner la liste des répertoires j'ai tenté de retourner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return response.ResponseUri.ToString();
    si je tente de connecter service.monsite.fr/RepertoireDeTravail il me retourne ftp://service.monsite.fr/RepertoireDeTravail => OK
    si je tente de connecter service.monsite.fr il me retourne ftp://service.monsite.fr/ => OK
    si je tente de connecter service.monsite.fr/RepertoireQuiExistePAS il me retourne ftp://service.monsite.fr/RepertoireQuiExistePAS => là pas d'accord du tout ! puisque le répertoire n'existe pas. j'attendais qu'il me retourne ftp://service.monsite.fr/
    le truc doit servir à détecter une redirection c'est tout :-(
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

Discussions similaires

  1. Test sur formulaire avec liste des erreurs
    Par Nicos77 dans le forum Langage
    Réponses: 37
    Dernier message: 17/11/2005, 10h22
  2. Envoi incomplet avec methode post
    Par Tr@nkill dans le forum ASP
    Réponses: 8
    Dernier message: 16/05/2005, 12h14
  3. Configuration des droits pour samba avec ftp et www
    Par Alkmie dans le forum Réseau
    Réponses: 2
    Dernier message: 07/11/2004, 13h50
  4. Test PostgreSQL v8 avec NAMEDATALEN = 128 caracteres
    Par hondjack dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/10/2004, 00h32
  5. Test d'éxistence avec un RecordSet
    Par matt63 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 21/04/2004, 12h23

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