Problème de connexion FTP

Signaler
Messages postés
21
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
17 avril 2019
-
Messages postés
21
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
17 avril 2019
-
Salut à toutes et à tous,

Je veux développer une application windows qui download un txt d'un serveur FTP.
Ensuite je modifie en local le txt, puis je le supprime sur le serveur et j'upload la nouvelle version.

Chaque fois que j'essaye de me connecter, il me dit que la connexion ftp est ouverte mais une fois au
readCount = ftpStream.Read(buffer, 0, bufferSize);
il ne passe pas et l'erreur interceptée est :
+  [System.IO.IOException] {"Impossible de lire les données de la connexion de transport : Une connexion existante a dû être fermée par l'hôte distant."} System.IO.IOException

Le FtpStream me retourne :
  CanRead true bool
  CanSeek false bool
  CanTimeout true bool
  CanWrite false bool
  Length 'ftpStream.Length' a levé une exception de type 'System.NotSupportedException' long {System.NotSupportedException}
                    base {"Ce flux ne prend pas en charge les opérations de recherche."} 
                              System.SystemException {System.NotSupportedException}
 Position 'ftpStream.Position' a levé une exception de type 'System.NotSupportedException' long {System.NotSupportedException}
                    base {"Ce flux ne prend pas en charge les opérations de recherche."} 
                              System.SystemException {System.NotSupportedException}
  ReadTimeout 0x000493e0 int
  WriteTimeout 0x000493e0 int

Ca fait un bon moment que je planche (plus d'une semaine), mais je ne trouve pas la solution.
Quelqu'un aurait-il une idée ?

Voici mon code :

private
void Download(
string filePath, 
string fileName)
{

      FtpWebRequest reqFTP;

      try
            {

                  FileStream outputStream = 
new
FileStream(filePath + 
"\" + fileName, 
FileMode.Create);
                  reqFTP = (
FtpWebRequest)
FtpWebRequest.Create(
new
Uri(
"ftp://" + ftpServerIP + 
"/" + fileName));
                  reqFTP.Method = 
WebRequestMethods.
Ftp.DownloadFile;
                  reqFTP.UseBinary = 
true;
                  reqFTP.KeepAlive = 
true;
                  reqFTP.Credentials = 
new
NetworkCredential(ftpUserID, ftpPassword);

                  FtpWebResponse response = (
FtpWebResponse)reqFTP.GetResponse();

                  Stream ftpStream = response.GetResponseStream();

                  long cl = response.ContentLength;

                  int bufferSize = 2048;

                  int readCount;

                  byte[] buffer = 
new
byte[bufferSize]
;
                  readCount = ftpStream.Read(buffer, 0, bufferSize);
                  while (readCount > 0)
                  {
                        outputStream.Write(buffer, 0, readCount);
                        readCount = ftpStream.Read(buffer, 0, bufferSize);
                  }
                  ftpStream.Close();
                  outputStream.Close();
                  response.Close();
            }

            catch (
Exception ex)
            {

                  MessageBox.Show(ex.Message);
            }
}



Merci de vos z'avis z'avisés,
Jean-Marc

PS : J'ai essayé à partir de plusieurs sites FTP et j'ai toujours le même résultat.

2 réponses

Messages postés
28
Date d'inscription
dimanche 24 août 2003
Statut
Membre
Dernière intervention
28 septembre 2009

Salut Jean-Marc

as tu essayé de passer par un StreamReader  ?

par exemple en changeant juste ceci :

...

Stream
ftpBaseStream = response.GetResponseStream(); // <= code modifié

StreamReader
ftpStream =
new
StreamReader
(ftpBaseStream); // <= code ajouté...
...

CrougniMan
Messages postés
21
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
17 avril 2019

Salut Crougni et merci de ta réponse.

J'ai bien essayé ta solution mais je n'arrive pas à mettre le streamreader en oeuvre.
Aurais-tu un bout de code à me proposer ?

Merci,
JM

Ca fait longtemps que je planche, ça à l'air de fonctionner pour tout le monde sauf pour  moi. Qu'est-ce que je fais mal ou qu'est-ce qui pourrait bien se passer du côté du serveur si ce n'est pas moi ? On dirait que la connexion se ferme directement après son ouverture, même avec le keepalive à true. Je ne comprend vraiment pas et je dois vraiment trouver.