Bernard_R 2017-10-18 14:33 采纳率: 0%
浏览 2017

用C#写的FTP服务器程序,可以连上自建的服务器,但连接不上公司的服务器,并显示431错误,怎么解决?

我用C#写的FTP服务器程序,主要功能是往FTP服务器上传、下载文件、显示文件目录等文件管理方面的用途;我在自己电脑上搭建了一个FTP服务器(设置了SSL)用来测试程序,测试结果是程序预期功能都实现了;后来到公司的FTP服务器(也设置了SSL)上测试,发现连接不上公司的服务器,并显示错误为“ 431 Unable to negotiate secure command connection”,有没有大神知道问题出在哪里,怎么解决?

#region 获取当前目录下明细(包含文件和文件夹) string[] GetFilesDetailList()

        FtpWeb fw = new FtpWeb("10.11.11.21:990", "", "ftpuser", "1234"); //这部分应该是没问题的
        string[] FilesDetailList = fw.GetFilesDetailList();
        int FilesDetailListLength = FilesDetailList.Length;
        Console.WriteLine(FilesDetailListLength);
        for (int i = 0; i < FilesDetailListLength; i += 1)
        {
            string FilesDetail = FilesDetailList[i];
            Console.WriteLine("{0}", FilesDetail);
        }
        //备注:
        #endregion
 #region  GetFilesDetailList() 获取当前目录下明细(包含文件和文件夹)
        /// <summary>
        /// 获取当前目录下明细(包含文件和文件夹)   
        /// </summary>
        /// <returns></returns>
        public string[] GetFilesDetailList()
        {
            string[] downloadFiles;
            try
            {
                StringBuilder result = new StringBuilder();
                FtpWebRequest ftp;
                ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));
                ftp.UseBinary = true;  // 指定数据传输类型 
                ftp.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;//ListDirectory  ListDirectoryDetails
            #region  SSL
            ftp.EnableSsl = true;
            //如果要连接的 FTP 服务器要求凭据并支持安全套接字层 (SSL),则应将 EnableSsl 设置为true
            //如果不写会报出421错误(服务不可用)
            ServicePointManager.ServerCertificateValidationCallback = delegate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
            //证书验证过程
            #endregion


            WebResponse response = ftp.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream());
            string line = reader.ReadLine();
            while (line != null)
            {
                result.Append(line);
                result.Append("\n");
                line = reader.ReadLine();
            }
            result.Remove(result.ToString().LastIndexOf("\n"), 1);
            reader.Close();
            response.Close();
            return result.ToString().Split('\n');
        }
        catch (Exception ex)
        {
            downloadFiles = null;

            Console.WriteLine("{0}", ex.Message);    

            return downloadFiles;
        }
    }
    #endregion

  • 写回答

1条回答

  • Bernard_R 2017-10-23 09:15
    关注

    公司的FTP服务器时用serv-U建的,我后来在自己电脑上用serv-U建了个服务器(设置了SSL),然后用FlashFXP(也设置了SSL)去连接,一开始连不上,后来重装FlashFXP去连接,发现会弹出下图:
    [img=http://img.bbs.csdn.net/upload/201710/23/1508748956_751598.png][/img]

    选择“接受并保存”,就可以连上服务器了,所以本问题原因应该是是代码里面没有“接受并保存”证书;有没有人知道如何用C#写出“接受并保存”证书?

    评论

报告相同问题?

悬赏问题

  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛