これはややこしいことです。FTPWebRequest.GetResponse()メソッドのステータスコード
ファイルを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に入れて、これらのステータスコードに依存しないことでした。これで私は状態コードに依存せず、どんな失敗も常にキャッチブロックに向けられると仮定します。これが正しい方法であれば教えてください。
私は実用的な解決策をとって、サーバーにアップロードされたばかりのファイルがアップロード後に再び見つかるかどうかを確認するだけです。私はそれが質問に答えていないことを知っています - しかし、私はFTPサーバーの応答を信頼できないという結論に達しました – MacGyver