System.Net.FtpWebRequest GetDateTimestamp вызов умирает
Следующий тест работает...
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 ответа
Please add more information.
Guess so far: You are trying to
- a) Do a ls on the FTP server (works)
- b) Get at timestamp from the FTP server (doesn't work)
Поскольку все остальное кажется одинаковым (адрес и т. Д.), Я предполагаю, что оба смотрят на одни и те же данные. Я полагаю, что ls
просто работает, когда вы подключены. Но с какой отметкой времени вы пытаетесь добраться? Документация для WebRequestMethods.Ftp.GetDateTimestamp говорит
Представляет метод протокола FTP MDTM, который используется для получения отметки даты и времени из файла на сервере FTP.
(Акцент мной)
Какой файл? Насколько я вижу, вы указываете только папку (не уверен, что это работает)? Вы пробовали это с " ftp://myserver.com/dev/text.txt"?
Похоже, что URI в 2 примерах совпадают, ваши тестовые примеры не соответствуют описанию проблемы. Можете быть более конкретными?
(В общем случае проще всего добавить один фрагмент кода примера с выделением одной или двух строк, которые разбиваются.)