首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在下载时关闭流时FtpWebResponse错误550 (Windows 2012)

在下载时关闭流时FtpWebResponse错误550 (Windows 2012)
EN

Stack Overflow用户
提问于 2015-10-29 13:12:40
回答 1查看 281关注 0票数 0

我读过很多关于FtpWebResponse问题的信息和问题。但我遇到的问题是非常具体的。当我第一次尝试下载一个文件时,我没有任何问题。响应返回一个流,我将其保存到一个文件中。

但是,当我第二次尝试对同一个文件调用此方法时,我正在检查该文件是否已经存在于我的PC上,如果是,则尝试关闭该流并释放响应。问题是响应和流在close方法上抛出一个550错误。

在Wireshark中,在消息“数据连接已经打开;传输开始(125)”之后,我得到了Windows 2012的550答案。如何才能读取文件一次,而不是不能仅仅关闭流?

代码序列如下所示:

代码语言:javascript
复制
var request = GetNewDownloadRequest(uri);
try
{
   response = GetFTP(request);
}
catch (WebException e)
{
   throw;
}
Stream stream = response.GetResponseStream();
if (!File.Exists(localPath))
{
   SaveToFile(stream);
}

stream.Close();
response.Close();
stream = File.OpenRead(localPath);

发送请求而不使用它进行下载可以让我检查文件是否也存在于FTP服务器上。

我还比较了下载-在我的应用程序和Chrome。唯一的区别是Chrome在两者之间使用CWD命令,所以我使用了具有类似问题的MSDN解决方案,但最终没有帮助。

我想的最后一件事是,我从回应中抓起了一条小溪,结果却关闭了它。我可以关闭一个流甚至不读取它的一个字节?我可以解析一个流来关闭它吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-29 16:04:37

我目前的解决方案是,您不能在调用响应时同时关闭响应流或响应。清理所有内容的唯一方法是将整个流复制到(例如) MemoryStream,这样就可以关闭这两个流。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33415228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档