C# ftp服务器“无法连接到远程服务器” 20C

用C# 通过FtpWebRequest 下载服务器文件。

本机运行OK,部署到客户机器上运行程序就报“无法连接到远程服务器”,但客户的IE是可以打开这个FTP地址的。

错误信息是程序跑到FtpWebResponse ftpRes = (FtpWebResponse)ftpReq.GetResponse();抛出的。

哪位大哥告知一下,弄了一天没弄好。。。

3个回答

ftp分为主动模式 被动模式 还有身份验证,这个要看你的代码了。

u012120380
华xing ftpReq.Credentials = new NetworkCredential("anonymous", "");是这个用户名和密码的问题吗,怎么设置和分配权限呢
4 年多之前 回复

这是代码:
Uri u = new Uri(ftpurl + filename);
string downFile = Directory + "\" + filename;
//FtpWebRequest的作成
FtpWebRequest ftpReq = (FtpWebRequest)WebRequest.Create(u);
//设定用户名和密码
ftpReq.Credentials = new NetworkCredential("anonymous", "");
//Method WebRequestMethods.Ftp.DownloadFile("RETR")设定
ftpReq.Method = WebRequestMethods.Ftp.DownloadFile;
//要求终了后关闭连接
ftpReq.KeepAlive = false;

            //使用ASCII方式传送
            ftpReq.UseBinary = true;
            //设定PASSIVE方式无效
            ftpReq.UsePassive = false;
            ftpReq.Timeout = 60000;
            //判断是否继续下载
            //继续写入下载文件的FileStream
            FileStream fs;
            try
            {
                //if (File.Exists(downFile))
                //{
                //    //继续下载
                //    ftpReq.ContentOffset = (new FileInfo(downFile)).Length;
                //    fs = new FileStream(
                //        downFile, FileMode.Append, FileAccess.Write);
                //}
                //else
                //{
                //一般下载
                fs = new FileStream(
                    downFile, FileMode.Create, FileAccess.Write);
                //}

                //取得FtpWebResponse
                 ftpRes = (FtpWebResponse)ftpReq.GetResponse();
                //if (ftpRes.StatusCode != FtpStatusCode.FileActionOK) //如果服务器未响应,那么继续等待相应                        
                //    continue;
                //Application.DoEvents();
                //为了下载文件取得Stream
                Stream resStrm = ftpRes.GetResponseStream();
                //写入下载的数据
                byte[] buffer = new byte[1024];
                while (true)
                {
                    int readSize = resStrm.Read(buffer, 0, buffer.Length);
                    if (readSize == 0)
                        break;
                    fs.Write(buffer, 0, readSize);
                }
                fs.Close();
                resStrm.Close();
                //表示从FTP服务器被送信的状态
                Console.WriteLine("{0}: {1}", ftpRes.StatusCode, ftpRes.StatusDescription);
                //关闭连接
                ftpRes.Close();
                flag = true;
                //break;
            }

            catch (Exception)
            {
                throw;
            }

防火墙或者IE中设置了代理

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!