.Net 从FTP下载文件提示”基础连接已经关闭: 服务器提交了协议冲突。“

1 篇文章 0 订阅

通过.Net从FTP下载文件,提示基础连接已经关闭: 服务器提交了协议冲突。很奇怪的是部分文件比如excel可以下载,部分文件又下载不了。在网上找了一圈,发现很多都说是中文的问题,我在config中的system.web下加入了

<globalization requestEncoding="utf-8" responseEncoding="utf-8" uiCulture="zh-CN" culture="zh-CN" fileEncoding="utf-8" />

还是没用,后来仔细找了下,发现是代码的问题,报错 的代码如下:

            FtpWebRequest reqFTP;
            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));
            reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
            reqFTP.UseBinary = true;
            reqFTP.UsePassive = false;
            reqFTP.Credentials = new NetworkCredential(ftpUser, ftpPassword);
            using (FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse())
            {
                using (Stream ftpStream = response.GetResponseStream())
                {
                    byte[] buffer = new byte[response.ContentLength];
                    ftpStream.Read(buffer, 0, buffer.Length);
                    return buffer;
                }
            }

换成以下代码即可解决问题

            using (WebClient wc = new WebClient())
            {
                wc.Credentials = new NetworkCredential(ftpUser, ftpPassword);
                byte[] buffer = wc.DownloadData(url);
                return buffer;
            }

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值