.NET FtpWebRequest不返回DateTimeStamp或FileSize

时间:2010-06-04 10:20:41

标签: .net asp.net ftp ftpwebrequest

我正在使用FtpWebRequest连接到FTP服务器,我可以使用WebRequestMethods.Ftp.ListDirectoryDe​​tails列出目录详细信息。但是,远程服务器的响应有日,月和时间,但不是年:

  

-rw-rw-rw- 1个用户组949 Jun 2 08:43 Unsubscribes_20100602.zip

     

-rw-rw-rw- 1个用户组1773年6月1日06:48 export_142571709.txt

     

-rw-rw-rw- 1个用户组1773年6月1日06:50 export_142571722.txt

     

-rw-rw-rw- 1个用户组980 Jun 1 06:51 export_142571734.txt

这是我正在编写的应用程序所必需的,所以我尝试使用WebRequestMethods.Ftp.GetDateTimestamp来获取每个文件的datetimestamp,但响应始终为空。没有例外。

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));
    }
}

有没有人知道为什么会这样?

1 个答案:

答案 0 :(得分:3)

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));
    }

顺便说一下你也可以查看this个答案。