FtpWebRequest говорит, что поток ликвидирован - PullRequest
4 голосов
/ 13 октября 2009

Мне было интересно, знает ли кто-нибудь ответ, почему мой код вызывает исключение, когда я выполняю вызов fileStream.Read , с сообщением «Поток утилизирован»

Я могу перечислить файлы в папке и с помощью моего браузера для fileUrl отлично работает. Никакие прокси не задействованы. UnifiedFile - это просто подкласс VirtualFile, созданный в CMS, с которой я работаю. (это изображение, которое я пытаюсь загрузить)

FtpWebRequest fileRequest = (FtpWebRequest)FtpWebRequest.Create(fileUrl);
fileRequest.Method = WebRequestMethods.Ftp.DownloadFile;
fileRequest.Credentials = credentials;
fileRequest.EnableSsl = this.EnableSsl;
fileRequest.UseBinary = true;
fileRequest.UsePassive = true;
fileRequest.KeepAlive = true;
fileRequest.Proxy = null;

using (FtpWebResponse fileResponse = (FtpWebResponse)fileRequest.GetResponse())
{
    using (Stream fileStream = response.GetResponseStream())
    {
        UnifiedFile createdFile = PictureManager.Instance.CreateOriginalFile(name);
        using (Stream targetStream = createdFile.Open(FileMode.OpenOrCreate))
        {
             byte[] buffer = new byte[2048];

             // Read the file
             while (true)
             {
                int bytesRead = fileStream.Read(buffer, 0, buffer.Length);
                // Reached end of stream, close
                if (bytesRead == 0)
                  break;

                targetStream.Write(buffer, 0, bytesRead);
              }

         }
   }

}

Редактировать: Найдена ошибка; GetResponseStream выполняется для предыдущего запроса и, следовательно, для неверного запроса. DOH

Спасибо, ребята, за "помощь бабули" ;-) (шведское выражение, поэтому не знаю, действительно ли оно применимо на английском языке)

1 Ответ

3 голосов
/ 13 октября 2009

Вы должны проверить ответ StatusCode, прежде чем продолжить. Я подозреваю, что запрос не выполнен, поэтому тело ответа отсутствует.

...