这有点棘手。
我正在将文件异步上传到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块。如果这是正确的方式,请告诉我。
https://stackoverflow.com/questions/4713785
复制相似问题