FtpWebRequest表示Stream已处理完毕

时间:2009-10-13 12:09:00

标签: c# ftp ftpwebrequest

我想知道当我执行 fileStream.Read 调用时,是否有人知道为什么我的代码会强制执行一个exeption的回答,并显示消息“流被释放”

我可以列出文件夹中的文件,并使用我的浏览器到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

感谢Guys提供的“奶奶帮助”;-)(瑞典语表达所以不知道它是否真的适用于英语)

1 个答案:

答案 0 :(得分:3)

在继续之前,您应该检查回复StatusCode。我怀疑请求已失败,因此没有响应正文。