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 :

C# test connexion FTP SSL


Sujet :

C#

  1. #1
    Membre éclairé Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Points : 827
    Points
    827
    Par défaut C# test connexion FTP SSL
    Bonjour,

    J'ai récupéré ce bout de code pour l'intégrer a un projet.
    Bout de code qui me permet de tester la connexion a un FTP. Or j'ai un problème d'erreur 502 dans le code:

    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
     static void e_Connexion()
            {
                try
                {
                    string completeFTPPath = "ftp://192.168.33.4/Test";
                    // get the object used to communicate with the server.
                    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(completeFTPPath);
                    request.EnableSsl = true;
                    request.Credentials = new NetworkCredential("mach33", "mach33871_&m");
                    request.Method = WebRequestMethods.Ftp.UploadFile;
     
                    ServicePointManager.ServerCertificateValidationCallback = AcceptAllCertifications;
     
                    // read file into byte array
                    StreamReader sourceStream = new StreamReader(@"C:\test.txt");
                    byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
                    sourceStream.Close();
                    request.ContentLength = fileContents.Length;
     
                    // send bytes to server
                    Stream requestStream = request.GetRequestStream();
                    requestStream.Write(fileContents, 0, fileContents.Length);
                    requestStream.Close();
     
                    FtpWebResponse response = (FtpWebResponse)request.GetResponse();
                    Console.WriteLine("Response status: " + response.StatusDescription);
                }
                catch (WebException we)
                {
                    Console.WriteLine(we.Message);
                }
                catch (Exception exc)
                {
                    Console.WriteLine(exc.Message);
                }
            }
            public static bool AcceptAllCertifications(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certification, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
            {
                return true;
            }
    Sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Stream requestStream = request.GetRequestStream();
    erreur 502 : Commande non implémentée
    Quelqu'un aurait il déjà été confronté a ce genre de problème ?
    - La dernière fois que j'ai testé ca fonctionnait !
    - Vous n'avez rien modifié ?
    - Non ! Je suis pas idiot non plus.
    - ....
    - Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.

  2. #2
    Membre éclairé Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Points : 827
    Points
    827
    Par défaut
    Bonjour, j'ai adapté du code trouvé sur le net pour établir une connexion SSL sur un FTP, or, lors de l'exécution, il me retourne une erreur de violation de protocole, j'ai pourtant intégré un élément qui permet de valider les certificats, mais je pense que je ne l'utilise pas comme il faut.

    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
     using System;
    using System.Collections.Generic;
    using System.Collections;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.Net;
    using System.Security.Cryptography.X509Certificates;
    using System.Net.Security;
     
    namespace Ini
    {
        class WriteTextFile
        {
     
            static public WebRequest my_Wr;
            public delegate bool RemoteCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors);
     
            static void Main(string[] Args)
            {
                if(e_Connexion())
                {
                    Console.WriteLine("connexion réussie");
                }
                else
                {
                    Console.WriteLine("connexion echouée");
                }
            }
     
            static public bool e_Connexion()
            {
                WebResponse response;
                string chaineDeConnexion = "ftp://192.168.33.2:22";
                Console.WriteLine("Tentative de connexion au serveur ftp://192.168.33.2:22");
     
                ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(myCertificateValidation);
     
                try
                {
                    my_Wr = (FtpWebRequest)FtpWebRequest.Create(chaineDeConnexion);
                    Console.WriteLine("Identifiant : al");
                    Console.WriteLine("MDP : al123");
     
                    my_Wr.Credentials = new NetworkCredential("al", "al123");
     
                    my_Wr.Method = WebRequestMethods.Ftp.ListDirectory;
                    response = my_Wr.GetResponse();
                }
                catch (Exception e)
                {
                    Console.WriteLine("Erreur de connexion au serveur " + chaineDeConnexion);
                    Console.WriteLine(e.Message);
                    return false;
                }
                Console.WriteLine("Connexion reussie au serveur sur " + chaineDeConnexion);
                response.Close();
                return true;
     
            }
            static public bool myCertificateValidation(Object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors Errors)
            {
                return true;
            }
        }
    }
    Merci de votre aide !!
    - La dernière fois que j'ai testé ca fonctionnait !
    - Vous n'avez rien modifié ?
    - Non ! Je suis pas idiot non plus.
    - ....
    - Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Tu as essayé de mettre my_Wr.EnableSsl à true ?

  4. #4
    Membre éclairé Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Points : 827
    Points
    827
    Par défaut
    cette propriété ne m'est pas proposé.
    - La dernière fois que j'ai testé ca fonctionnait !
    - Vous n'avez rien modifié ?
    - Non ! Je suis pas idiot non plus.
    - ....
    - Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Nako_lito Voir le message
    cette propriété ne m'est pas proposé.
    C'est parce que c'est une propriété de FtpWebRequest, mais tu as déclaré la variable comme WebRequest. Change le type de my_Wr en FtpWebRequest et tu verras la propriété

  6. #6
    Membre éclairé Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Points : 827
    Points
    827
    Par défaut
    j'ai modifié le type de la variable my_Wr en FtpWebRequest, indiqué le paramètre EnableSsl a true, mais tjrs la violation de protocole :/
    - La dernière fois que j'ai testé ca fonctionnait !
    - Vous n'avez rien modifié ?
    - Non ! Je suis pas idiot non plus.
    - ....
    - Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Tu es sûr que c'est bien un serveur FTP, et pas SFTP ? Les 2 protocoles n'ont rien à voir entre eux...

  8. #8
    Membre éclairé Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Points : 827
    Points
    827
    Par défaut
    ah ?
    quand je tente de me connecter a ce ftp via filezilla, donc je rentre l'adresse, les users code et le port, il me met automatiquement sftp devant.

    le "s" fait référence a "secured" ? ou au fait que le ftp soit sécurisé ?
    - La dernière fois que j'ai testé ca fonctionnait !
    - Vous n'avez rien modifié ?
    - Non ! Je suis pas idiot non plus.
    - ....
    - Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Nako_lito Voir le message
    ah ?
    quand je tente de me connecter a ce ftp via filezilla, donc je rentre l'adresse, les users code et le port, il me met automatiquement sftp devant.

    le "s" fait référence a "secured" ? ou au fait que le ftp soit sécurisé ?
    SFTP = SSH File Transfer Protocol, donc un protocole de transfert de fichiers basé sur SSH. Ca n'a aucun rapport avec le protocole FTP (mis à part que ça sert à transférer des fichiers) et ce n'est pas compatible.

    Le .NET Framework ne fournit aucune classe pour l'utilisation de ce protocole, il faut utiliser des librairies tierces

    Par contre le FTP sécurisé (aka FTPS, ou FTP over SSL) est supporté

  10. #10
    Membre éclairé Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Points : 827
    Points
    827
    Par défaut
    donc si j'étais dans le cas d'un FTP sécurisé (aka FTPS, ou FTP over SSL), ma méthode avec la variable de type FtpWebRequest fonctionnerai ?

    si ça ne fonctionne pas, c'est que je suis dans le premier cas, et ça, c'est caca ...
    - La dernière fois que j'ai testé ca fonctionnait !
    - Vous n'avez rien modifié ?
    - Non ! Je suis pas idiot non plus.
    - ....
    - Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Nako_lito Voir le message
    donc si j'étais dans le cas d'un FTP sécurisé (aka FTPS, ou FTP over SSL), ma méthode avec la variable de type FtpWebRequest fonctionnerai ?
    En principe oui

Discussions similaires

  1. Vbscript test connexion FTP
    Par galene86 dans le forum VBScript
    Réponses: 1
    Dernier message: 18/06/2015, 15h01
  2. [Apache Camel] Connexion FTPS (SSL)
    Par martel dans le forum Plateformes réactives et architectures modulaires
    Réponses: 5
    Dernier message: 07/12/2013, 13h55
  3. erreur putfile() sur connexion FTP
    Par stefane1981 dans le forum MFC
    Réponses: 10
    Dernier message: 23/09/2005, 15h30
  4. Connexion FTP a travers proxy
    Par StreM dans le forum C++Builder
    Réponses: 1
    Dernier message: 13/08/2005, 23h07
  5. Connexion FTP
    Par bannik dans le forum Développement
    Réponses: 1
    Dernier message: 22/10/2004, 14h17

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