来自FTPWebRequest.GetResponse()方法的状态码

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (155)

这有点棘手。

我正在异步地将文件上传到FTP。上传每个文件后,我将检查该文件的上载操作的状态。这可以使用该请求的FtpWebResponse对象的StatusCode属性来完成。代码片段如下所示。

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

大约有37个StatusCode值msdn。我不知道这些状态代码值中的哪个将确保文件被成功上传。我在代码中使用的一些检查成功的方法是:

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

但我不知道剩下的。我需要确定这些代码,因为基于上传操作的失败或成功,我还需要执行其他相关操作。错误的情况可能会影响剩余的代码。另一个在我脑海中出现的想法是简单地将上面的代码放入一个...捕捉中,而不是依赖于这些状态代码。这样,我将不依赖于状态代码,并假设任何故障都将始终指向CATCH块。如果这是正确的方法,请告诉我。

提问于
用户回答回答于

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

扫码关注云+社区

领取腾讯云代金券