前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >原 荐 C# FTP 坑了我两天的一个坑

原 荐 C# FTP 坑了我两天的一个坑

作者头像
霡霂
发布2018-06-04 16:34:54
3.8K0
发布2018-06-04 16:34:54
举报
文章被收录于专栏:雨过天晴雨过天晴

问题描述

应公司运营的要求,需要写一个基于FTP的文件上传工具(win下),遂决定,基于C# 及 winform 写一个窗体小程序;经过了一周的深夜打码,终于初具雏形,最初在公司FTP的服务器上测试,前前后后踩了数十个坑:进度条问题,超大文件问题,中文文件名问题,UI线程问题,多线程问题。。。。

窗体截图
窗体截图

这些个坑也就罢,眼看工期将至,总算看到希望,就在昨日,进入联调阶段,开始连接集团FTP服务器,并进行后端逻辑联调,程序改为FTP服务器后,麻烦来了,先是由于手误的认证问题,后是文件路径等问题。。。。

输入图片说明
输入图片说明

其中,远程服务器返回错误: (500) 语法错误,无法识别命令。 问题把我坑的要死要死的。昨天调试到深夜三点多,依然没有任何解决方案,今天到公司后继续排查,打各种断点,查各个变量及类成员,各种异常通过Google,baidu,msdn,github,stackoverflow去搜相关问题,都没有找到真正能解决的问题。。。。

输入图片说明
输入图片说明

有说编码的问题,有说长链接的问题,有说路径的问题,有说被动主动的问题,有说权限问题……

真是坑的......

问题解决

在昨天百度了几十篇网页,今天谷歌了几十篇网页的情况下,终于转运,在一个调试中找到问题的答案。(吐槽下百度,搜索出来相似的网页太多,而且那些文章明显的采集来的。。。)

最后断点中分析到返回的状态为:CommandSyntaxError,在 FtpStatusCode 枚举 中查到:指定该命令有语法错误或不是被服务器识别的命令。

以此,谷歌搜索,几十篇文章中,终于找到相似的问题:

输入图片说明
输入图片说明

在二楼,楼主给出了他的答案:

输入图片说明
输入图片说明

是因为在请求的时候给ContentLength属性附了值,在从项目开始的近两周的时间里,FTP类,先后修改数十次,每行都仔细筛查,很多文章中都调用了这个属性,在内网测试中也都没发现,所以一直没注意掉这个问题。

关键词

代码语言:javascript
复制
出现“webReq.ContentType”引发了“System.NotSupportedException”类型的异常
“webReq.PreAuthenticate”引发了“System.NotSupportedException”类型的异常
“webReq.UseDefaultCredentials”引发了“System.NotSupportedException”类型的异常

“res.ContentType”引发了“System.NotSupportedException”类型的异常
“res.PreAuthenticate”引发了“System.NotSupportedException”类型的异常
“res.UseDefaultCredentials”引发了“System.NotSupportedException”类型的异常

搞了这么久,终于知道为什么了。这三个异常存在是正常的。我的程序需要使用ContentLength属性,因为是直接从http的改过来的,FTP的不能直接使用ContentLength属性,需要将Method改为WebRequestMethods.Ftp.GetFileSize,才能使用ContentLength属性。原因是在客户端中FtpWebRequest是忽略ContentLength这个属性的。

链接

http://bbs.csdn.net/topics/380034923

https://msdn.microsoft.com/zh-cn/library/system.net.ftpstatuscode(v=vs.110).aspx

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题描述
  • 问题解决
  • 关键词
  • 链接
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档