El siguiente código está destinado a recuperar un archivo a través de FTP. Sin embargo, estoy recibiendo un error con eso.FtpWebRequest Descargar archivo
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();
}
El error es:
The remote server returned an error: (550) File unavailable (e.g., file not found, no access)
El archivo sin duda existe en la máquina remota y yo soy capaz de realizar esta ftp manualmente (es decir, no tengo permisos). ¿Alguien puede decirme por qué podría estar recibiendo este error?
Encuentro wireshark útil para cosas como esta. Puede configurar un filtro para ver el tráfico FTP entre su máquina y el servidor. –
¿Qué ocurre si configura UsePassive en falso? Nunca obtuve ningún servidor que trabaje usando el modo pasivo. – Roy
Eso generalmente causaría un error de tiempo de espera en mi experiencia ya que intenta usar un puerto bloqueado por el firewall. –