System.Net.FtpWebRequest GetDateTimestamp调用终止

时间:2010-01-04 22:59:55

标签: c# ftpwebrequest

以下测试工作......

  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 个答案:

答案 0 :(得分:2)

请添加更多信息。

到目前为止猜猜:你正试图

  • a)在FTP服务器上执行ls(正常工作)
  • b)从FTP获取时间戳 服务器(不起作用)

由于其他一切看起来都一样(地址等),我假设两者都看相同的数据。我想,当你连接时,ls才能正常工作。但是你想要到达那个时间戳? WebRequestMethods.Ftp.GetDateTimestamp的文档说

  

表示FTP MDTM协议   用于检索的方法   FTP上的日期时间戳来自文件   服务器

(我强调)

哪个文件?据我所知,你只是指定一个文件夹(不确定是否有效)?你是用“ftp://myserver.com/dev/text.txt”试试的吗?

答案 1 :(得分:0)

看起来两个示例中的URI是相同的,您的测试用例与问题的描述不匹配。你可以说得更详细点吗?

(一般来说,最容易添加的只有一段示例代码,其中一行或两行突出显示。)