Добрый день, столкнулся с неведомой мне проблемой.
Есть некий фтп сервер, куда нужно загрузить файл. С помощью ФТП клиента файл загружается нормально. А вот программно совсем не хочет загружаться.
Вот код:
public static void ftpfile(string ftpfilepath, string inputfilepath)
{
var ftpfullpath = "ftp://127.0.0.1/" + ftpfilepath;
var ftp = (FtpWebRequest)WebRequest.Create(ftpfullpath);
ftp.Credentials = new NetworkCredential("user", "password");
ftp.KeepAlive = false;
ftp.UseBinary = true;
ftp.UsePassive = false;
ftp.Method = WebRequestMethods.Ftp.AppendFile;
var fs = File.OpenRead(inputfilepath);
var buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();
var ftpstream = ftp.GetRequestStream();
ftpstream.Write(buffer, 0, buffer.Length);
ftpstream.Close();
}
Если ставить
ftp.UsePassive = false;
возникает исключение: Время ожидания истекло.
Если ставить
ftp.UsePassive = true;
возникает исключение: В ответ на команду PASV сервер вернул не тот адрес, с которым было установлено соединение FTP.
В обоих случаях исключение возникает на строке
var ftpstream = ftp.GetRequestStream();
Проблема именно с конкретным ФТП сервером, разрешения на запись для пользователя имеются. На другие ФТП этот код загружает файлы корректно и без ошибок.
Может кто сталкивался с данной проблемой?