Проблемы c FTP C#

328
09 декабря 2016, 08:45

Вот код

        FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create("ftp://xxx.xxx.xx//Versions/" + (isStable ? "S1.noext" : "T1.noext"));
        ftp.Proxy = null;
        ftp.Credentials = new NetworkCredential("login", "password");
        ftp.Method = WebRequestMethods.Ftp.Rename;
        ftp.RenameTo = "Test.noext";
        WebResponse disp = ftp.GetResponse();
        disp.Close();

Если первый раз его запустить на одном файле, то файл успешно переименуется, а если запустить второй раз на другом файле в той же директории, то в GetResponse выскочит ошибка:

Удаленный сервер возвратил ошибку: (550) Файл недоступен (например, не найден или к нему нет доступа)

Пробовал по разному задавать URI (ftp://xxx.xxx.xx/asd/ и ftp://xxx:xxx@xxx.xxx.xx/asd/), ничего не получалось, одно и то же. Как решить эту проблему?

Answer 1

А вы уверены, что на второй итерации не выполняете метод с тем же самым ftp.RenameTo = "Test.noext";, что и в первый раз?

RenameTo не умеет заменять файл, т.е. если на сервере уже есть файл с именем, указанным в RenameTo, то будет ошибка.

Чтобы этой ситуации избежать, сначала удалите существующий файл отдельным запросом (ftp.Method = WebRequestMethods.Ftp.DeleteFile)

READ ALSO
WPF listView Обновление эллементов

WPF listView Обновление эллементов

Всем приветУ меня есть listView

856
Пересылаемое сообщение в Outlook

Пересылаемое сообщение в Outlook

Когда поступает новое сообщение то он выдаёт MessageBox и при нажатии в нём ОК открывается только что полученное сообщение, для пересылкиПроблема...

564
Скролинг за курсором мышки Datagridview

Скролинг за курсором мышки Datagridview

Сделал внутри datagridview drag drop, появилась проблема, например : нужно перетащить последнею строку на первое место, при этом первое место под скролом,...

320
ViewModel Locator

ViewModel Locator

У меня есть 3 ViewModel: базовая, и 2 дочернихХочу при помощи ViewModelLocator иметь возможность управлять свойством, которое находится в базовой ВМ, из дочерних,...

411