Следующий код предназначается для получения файла через FTP. Однако я получаю ошибку с ним.
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();
}
Ошибка:
Удаленный сервер возвратил ошибку: (550) недоступный Файл (например, файл, не найденный, никакой доступ)
Файл определенно существует на удаленной машине, и я могу выполнить этого ftp вручную (т.е. у Меня есть полномочия). Кто-либо может сказать мне, почему я мог бы получать эту ошибку?
Этот параграф из справочника по классу FptWebRequest может быть вам интересен:
URI может быть относительным или абсолютным. Если URI имеет вид "ftp://contoso.com/%2fpath" (%2f - это экранированное '/'), то URI является абсолютный, а текущий каталог /path. Однако, если URI имеет вид вида "ftp://contoso.com/path", то сначала .NET Framework входит в систему FTP сервер (используя имя пользователя и пароль, заданные свойством Credentials ), затем текущий каталог устанавливается в /path.