博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# FTP 坑了我两天的一个坑
阅读量:6656 次
发布时间:2019-06-25

本文共 1392 字,大约阅读时间需要 4 分钟。

hot3.png

问题描述

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

窗体截图

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

输入图片说明

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

输入图片说明

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

真是坑的......

问题解决

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

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

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

输入图片说明

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

输入图片说明

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

关键词

出现“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这个属性的。

链接

转载于:https://my.oschina.net/dingdayu/blog/1544048

你可能感兴趣的文章
curl_setopt函数相关应用及介绍(转)
查看>>
vue小技巧
查看>>
CDOJ 92 Journey LCA乱搞
查看>>
Spring BOOT PERFORMANCE
查看>>
Go语言打造以太坊智能合约测试框架(level3)
查看>>
浏览器如何渲染网页?
查看>>
无损压缩图片心得(二)
查看>>
DLL文件是怎么产生的,DLL文件是什么,DLL文件有什么用
查看>>
防止用户直接在地址栏输入URL浏览文件
查看>>
网页入门
查看>>
树B是否为树A的子结构
查看>>
383. Ransom Note
查看>>
HDU-4274 Spy's Work dfs搜索
查看>>
全排列的问题
查看>>
linux用户管理 用户和用户组信息
查看>>
httpclient 相关使用介绍
查看>>
python编程基础之十七
查看>>
MySQL国内省市直辖区
查看>>
没有思维能力
查看>>
聚集索引和非聚集索引的区别
查看>>