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

时间:2011-01-17 13:42:10

标签: c# .net ftpwebresponse

这有点棘手。

我正在异步上传文件到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());

根据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块。如果这是正确的方式,请告诉我。

1 个答案:

答案 0 :(得分:6)

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

相关问题