.Net 连接FTP下载文件报错:System.InvalidOperationException: The requested FTP command is not supported when using HTTP proxy
.NET Framework 上
Proxy属性标识IWebProxy与 FTP 服务器进行通信的实例。 代理的设置是由系统使用的配置文件和 Internet Explorer 本地网络设置。 若要指定应使用任何代理,请设置Proxy返回的代理实例到GlobalProxySelection.GetEmptyWebProxy方法。
必须设置Proxy之前将数据写入到请求的流或获取响应。 更改Proxy后调用GetRequestStream, BeginGetRequestStream, GetResponse,或BeginGetResponse方法使InvalidOperationException异常。
FtpWebRequest类支持 HTTP 和 ISA 防火墙客户端代理。
如果指定的代理是 HTTP 代理,则仅DownloadFile, ListDirectory,和ListDirectoryDetails支持命令。
上述说明,基本已经解释了异常的原因。但是既然代码中并未指定代理,但是实际缺使用了HTTP代理,结合有的电脑没问题有的电脑有问题现象,猜测应该是电脑设置或网络设置问题。如下是“自动检测代理”的说明,基本可以解释:
自动代理检测是一个进程,系统使用该进程来标识 Web 代理服务器,并用于代表客户端发送请求。 此功能也称为 Web 代理自动发现 (WPAD)。 启用自动代理检测后,系统会尝试查找代理配置脚本,该脚本负责返回一组可用于请求的代理。 如果找到了代理配置脚本,则会在针对使用 WebProxy 实例的请求获取代理信息、请求流或响应时,在本地计算机上下载、编译并运行该脚本。
自动代理检测由 WebProxy 类执行,且可采用请求级设置、配置文件中的设置和通过 Internet Explorer“局域网(LAN)”对话框指定的设置。

启用自动代理检测后,WebProxy 类会尝试按如下方式找到代理配置脚本:
WinINet
InternetQueryOption函数用于查找 Internet Explorer 最近检测到的代理配置脚本。如果找不到该脚本,WebProxy 类将使用动态主机配置协议 (DHCP) 查找该脚本。 DHCP 服务器可以采用脚本的位置(主机名)或脚本的完整 URL 进行响应。
如果 DHCP 未标识 WPAD 主机,则查询 DNS 以找到 WPAD 作为其名称或别名的主机。
如果未标识该主机,并且代理配置脚本的位置由 Internet Explorer LAN 设置或配置文件指定,则使用此位置。
默认情况下,Internet Explorer 代理设置用于检测此代理。 如果应用程序基于非交互式帐户运行(没有用于配置 IE 代理设置的简便方法),或要使用不同于 IE 设置的代理设置,则可以通过创建定义了 <defaultProxy> 元素(网络设置)和 <proxy> 元素(网络设置)元素的配置文件,对代理进行配置。
对于所创建的请求,可通过将空 Proxy 用于该请求,禁用请求级别的自动代理检测,如下面的代码示例所示。
public static void DisableForMyRequest (Uri resource)
{
WebRequest request = WebRequest.Create (resource);
request.Proxy = null;
WebResponse response = request.GetResponse ();
}
结合上述解释,在问题电脑上,将自动检测代理关闭后,测试正常。
.Net 连接FTP下载文件报错:System.InvalidOperationException: The requested FTP command is not supported when using HTTP proxy的更多相关文章
- .NET下载文件报错System.UnauthorizedAccessException的解决方法
假设VS代码对应路径为E:\Projects\Web1,在VS用“发布Web”的方式发布后的路径为E:\Site\Web1.在IIS新建2个站点,站点A指向E:\Projects\Web1,站点B指向 ...
- 上传文件报错System.Net.ProtocolViolationException: 必须先将 ContentLength 字节写入请求流,然后再调用 [Begin]GetResponse。
在上传文件的时候报错. 错误: System.Net.ProtocolViolationException: 必须先将 ContentLength 字节写入请求流,然后再调用 [Begin]GetRe ...
- ASP.NET MVC页面报错System.InvalidOperationException The view found at '~/Views/Home/Index.cshtml' was not created.
Application Exception System.InvalidOperationException The view found at '~/Views/Home/Index.cshtml' ...
- ABP 报错 System.InvalidOperationException: 实例失败。
错误:System.InvalidOperationException: 实例失败. 解决:数据库链接写错了,斜杠的问题 core:两根斜杠 .net framework:一根斜杠 core的写法: ...
- 用icas下载文件报错
前段时间服务器升级,过程中测试到报表下载,报表下载要用到icas,用的是sdts-client.jar,但是此jar包有两种连接模式,分别为: public static final SdtsConn ...
- IIS 下载文件 报错“401 - 未授权: 由于凭据无效,访问被拒绝。”
点开身份验证 改为启用就OK了 重启一下IIS. 如果你上在办法没有解决可参考 1.打开“IIS信息服务管理器”——>选择你发布的网站——>选择功能视图中的“身份验证”——>右键匿名 ...
- c#.net从ftp下载文件到本地
c#.net从ftp下载文件到本地 /*首先从配置文件读取ftp的登录信息*/ ; ; , buffer_c ...
- c#重命名文件,报错“System.NotSupportedException”类型的未经处理的异常在 mscorlib.dll 中发生”
修改远程服务器的文件名,报错“System.NotSupportedException”类型的未经处理的异常在 mscorlib.dll 中发生”,“System.NotSupportedExcept ...
- java ftp下载文件
1.使用官方正规的jar commons-net-1.4.1.jar jakarta-oro-2.0.8.jar 注意:使用ftp从windows服务器下载文件和从linux服务器下载文件不一样 2. ...
随机推荐
- tomcat不需要重启热部署xml文件
项目中,遇到情况,有时候增加struts的配置了,有时候粗心改错了,然后急需要发布线上吧,又不能重启影响其他的,最后发现struts有这个功能呢! 在struts.xml的配置文件中加上一句话就行 & ...
- C#跟Lua如何超高性能传递数据
前言 在UWA学堂上线那天,我买了招文勇这篇Lua交互的课程,19块还算值,但是前段时间太忙,一直没空研究,他的demo是基于xlua的,今天终于花了大半天时间在tolua下跑起来了,记录一下我的理解 ...
- Android学习总结之开发工具AndroidStudio的安装与配置
安装AndroidStudio 首先下载AndroidStudio的安装包,直接在百度AndroidStudio下载即可,安装过程简单,只需要修改安装路径(不要有空格和中文即可).然后下一步下一步就可 ...
- C#2.0新增功能05 迭代器
连载目录 [已更新最新开发文章,点击查看详细] 迭代器可用于逐步迭代集合,例如列表和数组. 迭代器方法或 get 访问器可对集合执行自定义迭代. 迭代器方法使用 yield return 语句返 ...
- 关于python中的特殊方法
研究了几个小时,大概对python中的特殊方法一知半解,现在写写自己的理解,以及记录一些找到的资源.待自己有比较深入理解的时候,再来更新 https://docs.python.org/3/refer ...
- 深入理解JVM-类加载器深入解析(3)
深入理解JVM-类加载器深入解析(3) 获得ClassLoader的途径 获得当前类的ClassLoader clazz.getClassLoader() 获得当前线程上下文的ClassLoader ...
- SpringBoot开发案例之打造十万博文Web篇
前言 通过 Python 爬取十万博文之后,最重要的是要让互联网用户访问到,那么如何做呢? 选型 从后台框架.前端模板.数据库连接池.缓存.代理服务.限流等组件多个维度选型. 后台框架 SpringB ...
- vue中使用vue-amap(高德地图)
因为项目要求调用高德地图,就按照官方文档按部就班的捣鼓,这一路上出了不少问题. 前言: vue-cli,node环境什么的自己安装设置推荐一个博客:https://blog.csdn.net/wula ...
- Docker相关地址
Docker社区版(CE)地址: https://hub.docker.com/search/?type=edition&offering=community Docker文档地址: http ...
- python基础之条件控制
行与缩进 python使用缩进来表示代码块,不需要使用大括号 {} ,同一个代码块的语句必须包含相同的缩进空格数. 条件控制 #条件控制语法: if 条件: 代码块 elif 条件: 代码块 else ...