C # FTP 550 ошибка - PullRequest
       1

C # FTP 550 ошибка

3 голосов
/ 16 декабря 2010

Я пытаюсь программно загрузить файл в C # через FTP, вот соответствующий код (очевидно, с поддельными кредитами и URI):

try
{
    var request = FtpWebRequest.Create("ftp://ftp.mydomain.com/folder/file.zip");
    request.Credentials = new NetworkCredential("username", "password");

    using (var response = request.GetResponse())
    {
         ...
    }
}
catch (WebException we)
{
    ...
}

Исключение выдается на request.GetResponse(), икод ошибки 550. Проблема не в учетных данных или URI, так как они отлично работают в IE, и файл успешно загружается туда.Что мне не хватает?Есть ли какой-то другой вид учетных данных, который я должен использовать?Есть ли свойство у объекта request, который я не устанавливаю?Любая помощь будет оценена.

Ответы [ 6 ]

6 голосов
/ 28 декабря 2010

Оказывается, корень FTP не обязательно совпадает с корнем URL.Возможно, я перепутал терминологию, поэтому позвольте мне объяснить: в моем случае подключение к ftp.mydomain.com уже начинается с / folder, поэтому мой URL должен быть просто ftp: //ftp.mydomain.com/file.zip .IE8 знает, как устранить избыточную часть / папку в исходном пути, а класс FtpRequest - нет, поэтому он работал в IE8, но не в коде C #.

4 голосов
/ 20 февраля 2012

Поставьте еще одну косую черту в начале части локального пути (после имени хоста: порт):

var request = FtpWebRequest.Create("ftp://ftp.mydomain.com//folder/file.zip");

Это сработало для меня.

1 голос
/ 07 августа 2012

Соединение с моим FTP-сервером показывает различное поведение, в зависимости от того, где я пытаюсь подключиться. В моей локальной сети он работает только с одной косой чертой после доменной части, например, FTP: //test.test.com/folder/myfile.txt

Но на удаленной машине мне нужно использовать две косые черты, такие как ftp: //test.test.com//folder/myfile.txt

Подход с двумя слэшами работает в обоих случаях.

1 голос
/ 16 декабря 2010

Вы не установили Method.

 request.Method = WebRequestMethods.Ftp.DownloadFile;
1 голос
/ 16 декабря 2010

Вот что я использую, держу пари. Метод - это главное, чего вам не хватает

        request = (FtpWebRequest)FtpWebRequest.Create(address);
        request.Credentials = new NetworkCredential("username", "password");
        request.UsePassive = true;
        request.UseBinary = true;
        request.Proxy = null;

        request.Method = WebRequestMethods.Ftp.DownloadFile;
        FtpWebResponse dataResponce = (FtpWebResponse)request.GetResponse();
0 голосов
/ 18 мая 2015

Недавно у меня возникла эта проблема, и после долгих испытаний обнаружил, что некоторый модуль между здесь и там не любил смешанный регистр URI, и поэтому я решил использовать .ToLower () для URI

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...