XingCheng98
2015-08-04 08:02
采纳率: 0%
浏览 3.7k

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

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

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

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

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

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • threenewbee 2015-08-04 08:03

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

    评论
    解决 无用
    打赏 举报
  • XingCheng98 2015-08-04 08:04

    这是代码:
    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;
                }
    
    评论
    解决 无用
    打赏 举报
  • qyl_qiyalu 2016-07-26 09:04

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

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题