【问题标题】:Status Code from FTPWebRequest.GetResponse() method来自 FTPWebRequest.GetResponse() 方法的状态码
【发布时间】:2011-01-17 13:42:09
【问题描述】:

这有点棘手。

我正在异步上传文件到 FTP。 上传每个文件后,我正在检查该文件的上传操作状态。这可以通过该请求的 FtpWebResponse 对象的 StatusCode 属性来完成。 代码 sn-p 如下所示。

FileStream fs = File.Open(fileName, FileMode.Open);

while ((iWork = fs.Read(buf, 0, buf.Length)) > 0)
    requestStream.Write(buf, 0, iWork);

requestStream.Close();

FtpWebResponse wrRet = ((FtpWebResponse)state.Request.GetResponse());

根据msdn,大约有 37 个 StatusCode 值。我不知道这些状态代码值中的哪一个可以确保文件成功上传。我在代码中用于检查是否成功的其中一些是:

wrRet.StatusCode == FtpStatusCode.CommandOK 
wrRet.StatusCode == FtpStatusCode.ClosingData
wrRet.StatusCode == FtpStatusCode.ClosingControl
wrRet.StatusCode == FtpStatusCode.ConnectionClosed
wrRet.StatusCode == FtpStatusCode.FileActionOK
wrRet.StatusCode == FtpStatusCode.FileStatus

但我不知道其余的。我需要确定这些代码,因为根据上传操作的失败或成功,我还有其他相关操作要执行。错误的条件会影响剩余的代码。 我想到的另一个想法是将上面的代码简单地放入 try..catch 中,而不依赖于这些状态代码。有了这个,我不会依赖状态代码并假设任何失败都将始终指向 catch 块。请让我知道这是否是正确的方法。

【问题讨论】:

  • 我在使用 FTP 服务器时遇到了麻烦。我会采用务实的解决方案,只需检查上传后是否可以再次找到刚刚上传到服务器的文件。我知道它没有回答问题 - 但我只是得出结论,我无法信任 FTP 服务器的响应

标签: c# .net ftpwebresponse


【解决方案1】:

FtpStatusCode.ConnectionClosed426 这是 Connection closed; transfer aborted 所以我认为这实际上是一个失败。 2XX 范围内的任何内容通常都应该是成功的。对于我构建的 FTP 客户端,我只记得收到成功上传的客户端是 226 - FtpStatusCode.ClosingData

【讨论】:

  • 谢谢克里斯。但正如我上面所说,我还检查了 ClosingData 值。大多数时候或几乎总是在我的开发环境中,我得到这种状态。但不知何故,在生产环境中我遇到了一个问题。 (如果状态代码与上面帖子中提到的任何一个都不匹配,我将再次上传文件。该文件实际上被上传了两次。)检索到的其他状态代码不是我上面提到的状态代码之一,但仍然是成功的案例。对此有何想法?
  • 我建议打开 System.Net 的跟踪功能,看看您是否可以获得有关上传失败原因的更多信息。 blogs.msdn.com/b/dgorti/archive/2005/09/18/471003.aspx
  • @Nishant 由于 FTP RFC 的版本不同,存在许多不同的状态代码,但您必须确定您使用的是哪个版本的 FTP,然后您应该使用明确的 FTP 代码,最好使用 SFTP 或 FTPS。
  • @Nishant 如果您将 NAT 与 Active FTP 一起使用,它也不会起作用。 slacksite.com/other/ftp.html
  • @ChrisHaas 澄清一下,你是在建议bool success = (int)response.StatusCode >= 200 && (int)response.StatusCode < 300;吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-08
相关资源
最近更新 更多