【问题标题】:Getting "This server requires encryption" when connecting to FTP server in C#在 C# 中连接到 FTP 服务器时获取“此服务器需要加密”
【发布时间】:2018-06-13 05:40:25
【问题描述】:

我想通过代码统一上传 FTP 上的 XML 文件,但我无法先连接到 FTP。

所以在上传之前我只是尝试访问 FTP 并列出目录。

我使用这个代码:

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(host);
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

request.Credentials = new NetworkCredential(user, pass);

FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
Debug.Log(string.Format("Directory List Complete, status {0}", response.StatusDescription));

response.Close();

但我总是有同样的错误:

错误: [Exception] Exception 认证或解密失败。

错误: [异常] 异常服务器返回错误:550-此服务器需要加密。 550 您必须发出 AUTH 命令以更改为加密会话,然后才能尝试登录。

寻找其他帖子,我看到身份验证是匿名的或者我的是普通的。

此外,FTP 需要 TLS 协议。

谢谢你帮助我。

【问题讨论】:

  • 我相信你应该使用X509Certificate2证书对象。
  • 向我们展示.NET network log + 任何 FTP 客户端(甚至是 GUI 客户端)的日志,显示您如何在运行 .NET 代码的同一台机器上成功进行身份验证。 + 完整的异常调用堆栈。
  • 正在寻找 .Net 网络日志 :) thx
  • 那么您是否收到“此服务器需要加密”
  • 为什么要还原我的编辑?我们需要minimal reproducible example。您发布的大部分代码与您的问题无关。

标签: c# .net ssl ftp ftpwebrequest


【解决方案1】:

如果您的 FTP 服务器需要 TLS/SSL 加密,您必须使用 FtpWebRequest.EnableSsl 启用它:

request.EnableSsl = true;

【讨论】:

  • 我的错,我忘了为我的尝试添加这个:/这就是为什么我有错误 550 :) 我添加了它但没有列出目录:/
  • 如果它对您的第一个问题有所帮助,请接受答案。并针对您的新问题发布一个新问题。不要改变你的问题。
  • 你为第二个答案提供帮助,这完全是我忘记添加 enableSSL 的错误 :) 这不是我的第一个问题 :) 但为了提高知名度,我会发一个新帖子 :)
猜你喜欢
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
  • 2014-04-17
  • 1970-01-01
  • 1970-01-01
  • 2011-05-28
  • 2021-02-03
  • 1970-01-01
相关资源
最近更新 更多