Код состояния из FTPWebRequest. Метод GetResponse ()

Это немного сложно.

Я загружаю файлы на FTP асинхронно. После загрузки каждого файла я проверяю статус операции загрузки для этого файла. Это можно сделать с помощью свойства StatusCode объекта FtpWebResponse для этого запроса. Фрагмент кода приведен ниже.

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

Но об остальных мне не известно. Мне нужно быть уверенным в этих кодах, потому что в зависимости от неудачной или успешной операции загрузки у меня есть другие зависимые операции, которые нужно выполнить. Неправильное условие может повлиять на оставшийся код. Другая мысль, которая пришла мне в голову, заключалась в том, чтобы просто поместить приведенный выше код в try..catch и не зависеть от этих кодов состояния. При этом я бы не зависел от кодов состояния и предполагал, что любой сбой всегда будет направлен на блок catch. Пожалуйста, дайте мне знать, правильный ли это путь.

19
задан abatishchev 11 October 2017 в 02:27
поделиться