【问题标题】:Problem with deleting a file over FTP通过 FTP 删除文件的问题
【发布时间】:2010-01-26 12:02:00
【问题描述】:

我正在使用 C# 将一些文件上传到 ftp 服务器。如果文件已经存在 FtpWebRequest 超时,所以我想先删除它。

但是,WebRequestMethods.Ftp.DeleteFile 也总是超时。我是不是做错了什么?

这是我的代码:

FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(address);

request.Credentials = new NetworkCredential(Username, Password);
request.KeepAlive = false;
request.Method = WebRequestMethods.Ftp.DeleteFile;

try
{
    FtpWebResponse resp = (FtpWebResponse)request.GetResponse();
}
catch (Exception e)
{
    ...         
}

编辑:哦,我要删除的女巫文件没关系。只要文件存在,请求就会一直超时。如果文件不存在,则会引发不同的异常。

凭据没有问题,我可以进行其他操作(上传/下载没有问题)。这也不是服务器问题,如果我使用具有相同用户名的客户端(FileZilla)连接到它/传递一切正常。

感谢您的帮助。

【问题讨论】:

  • 可能是文件上的锁?你可以用另一个客户端手动删除它吗?
  • 您是否要删除不存在的文件?
  • 是的,如果我使用客户端 (filezila) 连接到 ftp 服务器,我可以毫无问题地删除它。
  • @PeanutPower:不,事实并非如此。如果我确实尝试删除不存在的文件,则会引发不同的异常(响应 550)
  • 刚开始遇到这个问题...代码也有大约 6 年的历史了。什么都没有改变。

标签: c# ftp ftpwebrequest


【解决方案1】:

我发现通过 FtpWebRequest 使用这个 Ftp,它本质上慢很多(因为它使用端口 80 上的 HTTP 协议),它让我发疯,因为 FileZilla 可以更快地完成它(显然使用通过端口 20/21 的 FTP 协议)。找到了一个开源的ftp组件here,不知道对你有没有用,但值得一试。

我知道这是一个主观的答案,会被否决,但就个人而言,在端口 80 上使用 ftp 肯定会慢很多,尤其是在文件操作上,比如您想要实现的目标。

【讨论】:

  • 我放弃了,决定使用您建议的库。我仍然很好奇为什么会发生这种情况,但我相信这可能只是“其中之一”......
  • 那是不正确的,FtpWebRequest 使用端口 21(或取决于被动/主动和服务器的适当端口),就像 Filezilla 一样。我同意FtpWebRequest 很差,但这个答案实际上仍然不正确。
【解决方案2】:

您可以访问 FTP 服务器的日志吗?如果您确实查看了 FTPWebRequest 正在执行的命令。可能是它试图在删除目录之前列出目录。

另一个问题可能是服务器处于被动模式,我相信 FileZilla 可能会自动检测到这一点,检查 filezilla 中的连接以查看。

【讨论】:

  • 主动/被动模式不是问题,只是尝试过,两种选项都以同样的方式失败。
  • 如何将超时设置为较大的值。例如request.Timeout = (60000 * 1) // 60000 * 分钟数
【解决方案3】:

了解客户端和 FTP 服务器之间发送了哪些命令有助于找出导致超时的原因。是否可以使用Ethereal之类的数据包分析器来捕获通信日志?

替代方法可能是使用第三方 FTP 组件并启用登录。以下代码使用我们的Rebex FTP

// create client 
Ftp client = new Ftp();
// enable logging 
client.LogWriter = new Rebex.FileLogWriter(@"c:\temp\log.txt", Rebex.LogLevel.Debug); 

// connect
client.Connect("ftp.example.org");
client.Login("username", "password");

// browse directories, transfer files 
client.DeleteFile("file.txt");

// disconnect 
client.Disconnect();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 2013-03-12
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多