2010-07-09 6 views
1

J'ai un problème qui me dérange depuis un moment.C#: Erreur FTP aléatoire (550) en essayant de télécharger des fichiers

Je télécharge des fichiers depuis un serveur FTP dans .net, et au hasard (et j'insister sur le fait, il est tout à fait au hasard), je reçois l'erreur suivante:

System.Net.WebException: Le serveur distant a renvoyé une erreur: (550) Fichier indisponible (par exemple, fichier introuvable, pas d'accès).

Notre code dans .net implémente un mécanisme de réessai, donc quand cette erreur se produit, le code va à nouveau télécharger tous les fichiers. Puis, parfois, il réussira, d'autres fois, l'erreur 550 se produira sur un autre fichier, parfois sur le même fichier, il est complètement aléatoire.

Nous est un extrait de la méthode DownloadFile qui est appelé pour chaque fichiers à télécharger à nouveau

byte[] byWork = new byte[2047]; 
... 
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(new Uri(_uri.ToString() + "/" + filename)); 
request.Method = WebRequestMethods.Ftp.DownloadFile; 
request.Credentials = new NetworkCredential(_Username, _Password); 
using (FtpWebResponse response = (FtpWebResponse)request.GetResponse()) 
      { 
       using (Stream rs = response.GetResponseStream()) 
       { 
        using (FileStream fs = new FileStream(destination, FileMode.Create)) 
        { 
         do 
         { 
          iWork = rs.Read(byWork, 0, byWork.Length); 
          fs.Write(byWork, 0, iWork); 
         } while (iWork != 0); 
         fs.Flush(); 
        } 
       } 
      } 

, la chose qui me dérange est que s'il y a une erreur dans ce code, l'erreur 550 serait arriver à chaque fois. Cependant, nous pouvons essayer de télécharger un fichier, nous obtenons l'erreur, nous essayons de télécharger le même fichier avec les mêmes paramètres, et cela fonctionnera. Et il semble arriver plus souvent avec des fichiers plus volumineux. Une idée?

Répondre

1

S'il vous plaît noter, le ci-dessous est juste anecdotique, je n'ai rien, sauf de vagues souvenirs et des hypothèses pour le sauvegarder. Donc, plutôt que d'une solution réelle, il suffit de prendre cela comme un "remonter le moral, ce n'est peut-être pas votre faute du tout".

Je pense que 550 erreurs sont plus susceptibles d'être dues à un problème avec le serveur plutôt que le client. Je me souviens d'avoir 550 erreurs assez souvent en utilisant le serveur ftp mal entretenu d'un ancien FAI, et j'ai essayé plusieurs clients sans que cela ne fasse une réelle différence. Je me souviens aussi avoir vu d'autres personnes poster des messages sur des problèmes similaires pour le même serveur et d'autres serveurs.

Je pense que la meilleure façon de le gérer est de simplement réessayer le téléchargement automatiquement et j'espère qu'après quelques essais, vous l'aurez, bien que cela signifie évidemment que vous gaspillez de la bande passante.

Questions connexes