使用WebClient上传、下载出现的问题

seeto 2015-12-04 11:13:03
我做了一个文件控制系统,有两个子窗口,一个窗口供用户浏览阅读文件,一个窗口供用户上传文件到服务器。

用户浏览文件时,点击一个文件,文件将被WebClient使用FTP下载到临时文件夹,下载完成后自动打开供用户阅读。

上传文件时,用户选择了文件,程序就会使用WebClient使用FTP上传到服务器。

FTP是上传一个帐户,下载一个帐户,但是是同一个服务器。

平时使用一切正常。但当用户上传完文件后,再打开浏览窗口来阅读文件时就出错,说找不到文件,我查找原因,发现FTP服务器显示正常下载,但是本地临时文件夹里没有文件,之前能打开的文件现在也不能打开了,情况同上,显示正常的下载,但临时文件夹里就是没有文件,此时上传窗口的上传功能还是正常的。关闭上传窗口也不能解决问题,必须把整个系统关闭,再次打开,才能正常打开文件,但一上传文件后,浏览打开功能又不能用了。

我个人觉得是WebClient上传完后没有被销毁,造成两个窗口冲突,于是我加上.Dispose(),还是不行。
恰好遇到一台电脑,居然没有这种错误发生,这台电脑是win7系统,之前出错的电脑是winxp系统,不知道是否和这个有没,因为这里没有更多的装win7的电脑来测试。
该如何解决?
...全文
206 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
seeto 2015-12-09
  • 打赏
  • 举报
回复
引用 12 楼 xuzuning 的回复:
WebClient 做 ftp 上传下载?要是改用 ftp 命令操作呢? win7 行 xp 不行,显然不是权限问题 无论是上传还是下载,都要及时关闭文件
谢谢提醒,完全抛弃WebClient ,使用ftp命令后,上传下载什么问题都没有了,可惜的是没有了WebClient 的进度和完成事件。
seeto 2015-12-05
  • 打赏
  • 举报
回复
引用 12 楼 xuzuning 的回复:
WebClient 做 ftp 上传下载?要是改用 ftp 命令操作呢? win7 行 xp 不行,显然不是权限问题 无论是上传还是下载,都要及时关闭文件
文件、webClient都是及时关闭的。 我准备改用ftp命令,我参考了网上相关文章,说webClient有个问题,即使使用了webClient.Dispose()也不能销毁,没有找到解决办法。
seeto 2015-12-04
  • 打赏
  • 举报
回复
引用 6 楼 shingoscar 的回复:
[quote=引用 3 楼 seeto 的回复:] [quote=引用 2 楼 shingoscar 的回复:] WebClient下载不是要指定目录的吗?
指定的是临时目录[/quote] 临时目录你是怎么指定的?如果只是xp出错,是否是你指定的目录有问题,换个比如程序所在的目录试试[/quote] 就是程序所在的目录的,如果不运行上传窗口的上传,浏览窗口是正常下载浏览的。只有运行了上传,才有问题,所以我才怀疑是WebClient上传完后没有被销毁,但是把上传窗口关闭了还是不行,而且某台电脑装了win7的正常运行,这才奇怪。我准备找台电脑装虚拟机再装个win7试试是不是win7 就正常,一台电脑说明不了问题。
  • 打赏
  • 举报
回复
运行下载程序的windows用户(不是指FTP用户)对指定的临时目录有读写权限吗?
Poopaye 2015-12-04
  • 打赏
  • 举报
回复
引用 3 楼 seeto 的回复:
[quote=引用 2 楼 shingoscar 的回复:] WebClient下载不是要指定目录的吗?
指定的是临时目录[/quote] 临时目录你是怎么指定的?如果只是xp出错,是否是你指定的目录有问题,换个比如程序所在的目录试试
seeto 2015-12-04
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
“平时使用一切正常。”这种借口就说明你的开发流程中没有必要的测试。 你软件的错误(用户那里表现出来的错误),要在开发阶段重现出来。不管是xp还是win7,你的程序的错误都是一样的,只不过是你没有耐心在开发环境重现错误而已。 另外,程序中不要胡乱写 try...catch,不可在开发和测试阶段去掩盖bug。基本上胡乱写这个的人都会不断地像你这样表现的。去掉在Debug编译模式下多余的try...catch语句,让bug在开发环境立刻出现,这才是正规的开发方法。
还有,这个程序我暂时还没有使用过try...catch
seeto 2015-12-04
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
“平时使用一切正常。”这种借口就说明你的开发流程中没有必要的测试。 你软件的错误(用户那里表现出来的错误),要在开发阶段重现出来。不管是xp还是win7,你的程序的错误都是一样的,只不过是你没有耐心在开发环境重现错误而已。 另外,程序中不要胡乱写 try...catch,不可在开发和测试阶段去掩盖bug。基本上胡乱写这个的人都会不断地像你这样表现的。去掉在Debug编译模式下多余的try...catch语句,让bug在开发环境立刻出现,这才是正规的开发方法。
这位前辈,我见你很多次了,你的回复都有一个特点,说一堆道理,但是很少能帮别人解决问题,而且你的批判里很多都是不对的,因为你不完全了解当事人的情况。相信你是一位领导吧?我记得我回复过你的回复,也是在我发问的帖子里。我是业余编程爱好者,我不是专业程序员,我有很多知识还要学习,我30多岁,编程与我的专业丝毫不相关,但我自学编程,我对编程就是十分的热爱。我现在为我自己的单位免费开发软件,提高大家的工作效率,已经免费为单位做了好几个系统,只想做个好人,领导看好,给了我一些时间来做开发。 这个程序我还没有给其他人用过,我说的用户就是我自己,我只是为了把情况说明白,做了角色扮演而已。 我看过你之前给别人的回答,感觉是挺专业的,我希望如果你知道这个问题的解决方法,请直接告诉我好吗?
seeto 2015-12-04
  • 打赏
  • 举报
回复
引用 2 楼 shingoscar 的回复:
WebClient下载不是要指定目录的吗?
指定的是临时目录
Poopaye 2015-12-04
  • 打赏
  • 举报
回复
WebClient下载不是要指定目录的吗?
  • 打赏
  • 举报
回复
“平时使用一切正常。”这种借口就说明你的开发流程中没有必要的测试。 你软件的错误(用户那里表现出来的错误),要在开发阶段重现出来。不管是xp还是win7,你的程序的错误都是一样的,只不过是你没有耐心在开发环境重现错误而已。 另外,程序中不要胡乱写 try...catch,不可在开发和测试阶段去掩盖bug。基本上胡乱写这个的人都会不断地像你这样表现的。去掉在Debug编译模式下多余的try...catch语句,让bug在开发环境立刻出现,这才是正规的开发方法。
xuzuning 2015-12-04
  • 打赏
  • 举报
回复
WebClient 做 ftp 上传下载?要是改用 ftp 命令操作呢? win7 行 xp 不行,显然不是权限问题 无论是上传还是下载,都要及时关闭文件
seeto 2015-12-04
  • 打赏
  • 举报
回复
引用 7 楼 dongxinxi 的回复:
运行下载程序的windows用户(不是指FTP用户)对指定的临时目录有读写权限吗?
有权限,没有上传之前是正常的。
seeto 2015-12-04
  • 打赏
  • 举报
回复
引用 9 楼 shingoscar 的回复:
该不是上传的代码会清理你的临时目录吧
不是,如果我先打开阅读了几个文件,那么临时文件夹里面是有文件的,然后我打开上传窗口,上传几个文件,再看临时文件夹,刚才那几个文件还在,使用浏览窗口阅读之前这几个文件也是没有问题的,但是如果阅读的是其他刚才没有打开过的文件,就打开不了,因为新下载的文件没有在临时文件夹里。等会下载个filemon来看看文件下载后跑到哪去了。
Poopaye 2015-12-04
  • 打赏
  • 举报
回复
该不是上传的代码会清理你的临时目录吧

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧