Problème de connexion FTP

Jean_Marc_1968 Messages postés 21 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 17 avril 2019 - 24 nov. 2008 à 16:27
Jean_Marc_1968 Messages postés 21 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 17 avril 2019 - 22 déc. 2008 à 02:20
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

crougni77 Messages postés 28 Date d'inscription dimanche 24 août 2003 Statut Membre Dernière intervention 28 septembre 2009
27 nov. 2008 à 15:25
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
0
Jean_Marc_1968 Messages postés 21 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 17 avril 2019
22 déc. 2008 à 02:20
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.
0
Rejoignez-nous