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?