【问题标题】:FtpWebRequest says Stream is DisposedFtpWebRequest 说 Stream 已处理
【发布时间】:2023-04-01 07:50:02
【问题描述】:

我想知道是否有人知道为什么我的代码在执行 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

感谢大家的“奶奶帮助”;-)(瑞典语,所以不知道它是否真的适用于英语)

【问题讨论】:

  • 听起来你有一些重构要做,;)
  • 是的,这更像是一个概念证明:)

标签: c# ftp ftpwebrequest


【解决方案1】:

在继续之前,您应该检查回复 StatusCode。我怀疑请求失败了,所以没有响应体。

【讨论】:

  • 确切的异常消息是:“无法访问已处置的对象。对象名称:'System.Net.Sockets.NetworkStream'”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多