.NET FtpWebRequest не возвращает DateTimeStamp или FileSize

Я использую FtpWebRequest для подключения к FTP-серверу, и я могу использовать WebRequestMethods.Ftp.ListDirectoryDetails для вывода сведений о каталоге. Однако ответ с удаленного сервера имеет день, месяц и время, но не год:

-rw-rw-rw- 1 группа пользователей 949 2 июня 08:43 Unsubscribes_20100602.zip

-rw-rw-rw- 1 группа пользователей 1773 1 июня 06:48 export_142571709.txt

-rw-rw-rw- 1 группа пользователей 1773 1 июня 06:50 export_142571722.txt

-rw-rw-rw- 1 группа пользователей 980 1 июня 06:51 export_142571734.txt

Это требуется для приложения, которое я пишу, поэтому я попытался использовать WebRequestMethods.Ftp.GetDateTimestamp, чтобы получить метку даты и времени для каждого файла, но ответ всегда пуст. Никаких исключений не выбрасывается.

try
{
    FtpWebRequest ftp = (FtpWebRequest)WebRequest.Create(path);

    ftp.Credentials = new NetworkCredential(_ftpUsername, _ftpPassword);
    ftp.Method = WebRequestMethods.Ftp.GetDateTimestamp;

    try
    {
        Stream stream = ftp.GetResponse().GetResponseStream();
        StreamReader sReader = new StreamReader(stream);

        return sReader;
    }
    catch (Exception exp)
    {
        throw new Exception(String.Format("An error occured getting the timestamp for {0}: {1}<br />", path, exp.Message));
    }
}

У кого-нибудь есть идеи, почему это может быть?


person Digital Rant    schedule 04.06.2010    source источник


Ответы (1)


Метод GetDateTimestamp не возвращает свои данные в обычном потоке. Точно так же, как метод размера файла возвращает свои данные в заголовке/свойстве ContentLength, метод GetDateTimestamp имеет свои данные в заголовке/свойстве LastModified.

    FtpWebRequest ftp = (FtpWebRequest)WebRequest.Create(path);

    ftp.Credentials = new NetworkCredential(_ftpUsername, _ftpPassword);
    ftp.Method = WebRequestMethods.Ftp.GetDateTimestamp;

    try
    {
       using(FtpWebResponse response = (FtpWebResponse)ftp.GetResponse())
       {
           return response.LastModified;
       }
    }
    catch
    {
        throw new Exception(String.Format("An error occured getting the timestamp for {0}: {1}<br />", path, exp.Message));
    }

Кстати, вы также можете проверить этот ответ.

person David Perlman    schedule 14.06.2010