FtpWebRequest Télécharger Le Ficher

Le code suivant est destiné à récupérer un fichier via FTP. Cependant, j'obtiens une erreur avec elle.

serverPath = "ftp://x.x.x.x/tmp/myfile.txt";

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverPath);

request.KeepAlive = true;
request.UsePassive = true;
request.UseBinary = true;

request.Method = WebRequestMethods.Ftp.DownloadFile;                
request.Credentials = new NetworkCredential(username, password);

//Read the file from the server & write to destination                
using (FtpWebResponse response = (FtpWebResponse)request.GetResponse()) //Error here
using (Stream responseStream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(responseStream))            
using (StreamWriter destination = new StreamWriter(destinationFile))
{
    destination.Write(reader.ReadToEnd());
    destination.Flush();
}

L'erreur est:

Le serveur distant a retourné une erreur: (550) Fichier indisponible (par exemple, fichier non trouvé, pas d'accès)

Le fichier certainement n'existe pas sur la machine distante, et je suis en mesure d'effectuer cette ftp manuellement (c'est à dire que j'ai des autorisations). Quelqu'un peut me dire pourquoi j'ai peut-être cette erreur?

  • Je trouve wireshark utile pour des trucs comme ça. Vous pouvez configurer un filtre pour afficher le trafic FTP entre votre machine et le serveur.
  • Qu'advient-il si vous définissez UsePassive pour de faux? Je n'ai jamais eu aucun travail de serveur en utilisant le mode passif..
  • Généralement la cause d'une erreur de délai, dans mon expérience, comme il essaie d'utiliser un port bloqué par le pare-feu.
  • Eh bien, c'est aussi loin que mes connaissances en va, le reste du code semble bien pour moi.