我用C#寫的FTP服務器程序,主要功能是往FTP服務器上傳、下載文件、顯示文件目錄等文件管理方面的用途;我在自己電腦上搭建了一個FTP服務器(設置了SSL)用來測試程序,測試結果是程序預期功能都實現了;后來到公司的FTP服務器(也設置了SSL)上測試,發現連接不上公司的服務器,VS2010上運行后提示的錯誤為“<431>?431?Unable?to?negotiate?secure?command?connection”,有沒有大神知道問題出在哪里,怎么解決?
?
以下是部分代碼:
1 #region 獲取當前目錄下明細(包含文件和文件夾) string[] GetFilesDetailList()
2 FtpWeb fw = new FtpWeb("10.11.11.21:990", "", "ftpuser", "1234"); //IP地址、端口、用戶名、密碼等應該是沒問題的
3 string[] FilesDetailList = fw.GetFilesDetailList();
4 int FilesDetailListLength = FilesDetailList.Length;
5 Console.WriteLine(FilesDetailListLength);
6 for (int i = 0; i < FilesDetailListLength; i += 1)
7 {
8 string FilesDetail = FilesDetailList[i];
9 Console.WriteLine("{0}", FilesDetail);
10 }
11 #endregion
12
13 #region GetFilesDetailList() 獲取當前目錄下明細(包含文件和文件夾)
14 /// <summary>
15 /// 獲取當前目錄下明細(包含文件和文件夾)
16 /// </summary>
17 /// <returns></returns>
18 public string[] GetFilesDetailList()
19 {
20 string[] downloadFiles;
21 try
22 {
23 StringBuilder result = new StringBuilder();
24 FtpWebRequest ftp;
25 ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));
26 ftp.UseBinary = true; // 指定數據傳輸類型
27 ftp.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
28 ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
29
30
31 #region SSL加密
32 ftp.EnableSsl = true;
33 //如果要連接的 FTP 服務器要求憑據并支持安全套接字層 (SSL),則應將 EnableSsl 設置為true
34 //如果不寫會報出421錯誤(服務不可用)
35 ServicePointManager.ServerCertificateValidationCallback = delegate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
36 //證書驗證過程
37 #endregion
38
39
40 WebResponse response = ftp.GetResponse();
41 StreamReader reader = new StreamReader(response.GetResponseStream());
42 string line = reader.ReadLine();
43 while (line != null)
44 {
45 result.Append(line);
46 result.Append("\n");
47 line = reader.ReadLine();
48 }
49 result.Remove(result.ToString().LastIndexOf("\n"), 1);
50 reader.Close();
51 response.Close();
52 return result.ToString().Split('\n');
53 }
54 catch (Exception ex)
55 {
56 downloadFiles = null;
58 Console.WriteLine("{0}", ex.Message);
59 return downloadFiles;
60 }
61 }
62 #endregion
?
?
5 回答

隔江千里
TA貢獻1906條經驗 獲得超10個贊
公司的FTP服務器時用serv-U建的,我后來在自己電腦上用serv-U建了個服務器(設置了SSL),然后用FlashFXP(也設置了SSL)去連接,一開始連不上,后來重裝FlashFXP去連接,發現會彈出下圖:
選擇“接受并保存”,就可以連上服務器了,所以本問題原因應該是是代碼里面沒有“接受并保存”證書;有沒有人知道如何用C#寫出“接受并保存”證書?
- 5 回答
- 0 關注
- 854 瀏覽
添加回答
舉報
0/150
提交
取消