Il seguente codice è destinato a recuperare un file tramite FTP. Tuttavia, sto ottenendo un errore con esso.FtpWebRequest Download File
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'errore è:
The remote server returned an error: (550) File unavailable (e.g., file not found, no access)
Il file sicuramente esiste sulla macchina remota e sono in grado di eseguire questa ftp manualmente (vale a dire non ho i permessi). Qualcuno può dirmi perché potrei avere questo errore?
Trovo wirehark utile per cose come questa. È possibile impostare un filtro per visualizzare il traffico FTP tra la macchina e il server. –
Cosa succede se si imposta UsePassive su false? Non ho mai avuto alcun server che utilizzava la modalità passiva. – Roy
Questo in genere causerebbe un errore di timeout nella mia esperienza in quanto tenta di utilizzare una porta bloccata dal firewall. –