System.Net.FtpWebRequest GetDateTimestamp вызов умирает - PullRequest
0 голосов
/ 05 января 2010

следующие тестовые работы ...

  public void test1()
  {
     string server="ftp://myserver.com/dev";
     string userName="myusername";
     string password="mypassword";

     FtpWebRequest req = (FtpWebRequest)WebRequest.Create( server );
     req.Credentials = new NetworkCredential( userName, password );
     req.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
     req.Timeout = 30000;
     req.UseBinary = false;
     req.EnableSsl = false;
     req.UsePassive = false;
     req.KeepAlive = true;

     using( FtpWebResponse resp = (FtpWebResponse)req.GetResponse() )
     {
        using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
        {
           string fileRecord = sr.ReadLine();
           while (fileRecord != null)
           {
              Console.WriteLine( fileRecord );
              fileRecord = sr.ReadLine();
           }
        }
     }
  }

Пока следующий тест не пройден ...

  public void test2()
  {
     string server="ftp://myserver.com/dev";
     string userName="myusername";
     string password="mypassword";

     FtpWebRequest req = (FtpWebRequest)WebRequest.Create( server );
     req.Credentials = new NetworkCredential( userName, password );
     req.Method = WebRequestMethods.Ftp.GetDateTimestamp;
     req.Timeout = 30000;
     req.UseBinary = false;
     req.EnableSsl = false;
     req.UsePassive = false;
     req.KeepAlive = true;

     using( FtpWebResponse resp = (FtpWebResponse)req.GetResponse() )
     {
        using( StreamReader sr = new StreamReader( resp.GetResponseStream() ) )
        {
           Console.WriteLine( resp.LastModified );
        }
     }
  }

с сообщением об ошибке:

Метод теста test2 выдал исключение: System.Net.WebException: удаленный сервер возвратил ошибку: (550) Файл недоступен (например, файл не найден, нет доступа).

ОБНОВЛЕНИЕ: Я пытался с другим FTP-сайтом (Unix), который использует порт по умолчанию #, поэтому URL-адрес " ftp: //myserver.com/dev" - и GetDateTimestamp () все еще умирает с той же ошибкой.

Я обновил строку темы и текст вопроса, чтобы он правильно отражал мой запрос.

Ответы [ 2 ]

2 голосов
/ 05 января 2010

Пожалуйста, добавьте больше информации.

Угадайте: вы пытаетесь

  • a) Делать ls на FTP-сервере (работает)
  • б) Получить на временной отметке с FTP сервер (не работает)

Поскольку все остальное кажется одинаковым (адрес и т. Д.), Я предполагаю, что оба смотрят на одни и те же данные. Я хотел бы представить, что ls просто работает, когда вы подключены. Но с какой отметкой времени вы пытаетесь добраться? Документация для WebRequestMethods.Ftp.GetDateTimestamp говорит

Представляет протокол FTP MDTM метод, который используется для получения отметка даты и времени из файла на FTP сервер.

(выделено мной)

Какой файл? Насколько я вижу, вы указываете только папку (не уверен, что это работает)? Вы пробовали это с " ftp: //myserver.com/dev/text.txt"?

0 голосов
/ 05 января 2010

Похоже, что URI в 2 примерах совпадают, ваши тесты не соответствуют описанию проблемы. Можете быть более конкретными?

(Как правило, проще всего добавить один фрагмент кода примера с выделением одной или двух разбивающихся строк.)

...