FtpWebRequest提示流已关闭。

4

我想知道为什么我的代码在调用fileStream.Read时会抛出异常,错误信息为“流已释放”。

我可以列出文件夹中的文件,并使用浏览器访问文件网址也没有问题。没有使用代理。UnifiedFile只是我所使用的CMS提供的VirtualFile的子类。(我正在尝试下载一张图片)

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" 是针对之前的请求,因此是错误的请求。哎呀

感谢大家提供的“奶奶式”帮助;-)(瑞典表达方式,不知道是否适用于英语)


听起来你需要进行一些重构,;) - AnthonyWJones
是的,那更多是一个概念证明而已 :) - ullmark
1个回答

3

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


精确的异常信息是:“无法访问已释放的对象。对象名称:'System.Net.Sockets.NetworkStream'” - ullmark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接