【问题标题】:uploading file to FTP with TSL/SSL explicit encryption giving error使用 TLS/SSL 显式加密将文件上传到 FTP 给出错误
【发布时间】:2017-03-27 10:40:22
【问题描述】:

我必须将文件上传到 ftp 站点。我可以使用 WINSCP

将文件传输到该 ftp 文件夹

现在我正在尝试使用 c# 和下面的代码来做同样的事情

FtpWebRequest ftpClient = (FtpWebRequest)FtpWebRequest.Create(
"ftp://ftps-xxxxx.xxx.xx.com:xxx/folder/text.txt");
         ftpClient.Credentials = new System.Net.NetworkCredential("username", "password");
          ftpClient.Method = System.Net.WebRequestMethods.Ftp.UploadFile;
          ftpClient.UseBinary = true;
          ftpClient.KeepAlive = true;
          System.IO.FileInfo fi = new System.IO.FileInfo(@"C:\d\text.txt");
          ftpClient.ContentLength = fi.Length;
          byte[] buffer = new byte[4097];
          int bytes = 0;
          int total_bytes = (int)fi.Length;
          System.IO.FileStream fs = fi.OpenRead();
          ftpClient.KeepAlive = false;
          ftpClient.Timeout = -1;
          System.IO.Stream rs = ftpClient.GetRequestStream();
          while (total_bytes > 0)
          {
             bytes = fs.Read(buffer, 0, buffer.Length);
             rs.Write(buffer, 0, bytes);
             total_bytes = total_bytes - bytes;
           }
          fs.Close();
          rs.Close();
          FtpWebResponse uploadResponse = (FtpWebResponse)ftpClient.GetResponse();
          string value = uploadResponse.StatusDescription;
          uploadResponse.Close();

当它到达System.IO.Stream rs = ftpClient.GetRequestStream(); 出现以下错误

远程服务器返回错误:(500) 语法错误,命令 无法识别。

【问题讨论】:

  • 使用具有给定 URL 和凭据的传统客户端有效吗?为什么是KeepAlive = true,然后是false
  • 您可以轻松地简化您在 MSDN 中给出的转移请求:msdn.microsoft.com/en-us/library/ms229715(v=vs.110).aspx
  • @ArnaudF。刚刚尝试使用false 也忘记从一开始就删除true ..也可以使用 WINSCP 客户端获取相同的 url 和凭据
  • Enable logging 给我们看日志 + 给我们看 WinSCP 日志。
  • 您还声称您在使用 TLS/SSL 时遇到问题,但我在您的代码中没有看到您启用它的任何内容。

标签: c#-4.0 ftp file-transfer


【解决方案1】:

我认为你不需要重新发明轮子,只需像这样转移:

        using (System.Net.WebClient c = new System.Net.WebClient())
        {
            c.Credentials = new System.Net.NetworkCredential("username", "password");
            c.UploadFile("ftp://...", @"C:\d\test.txt");
        }

【讨论】:

  • The remote server returned an error: (500) Syntax error, command unrecognized.
  • 你有内部异常吗?是ftp 还是sftp
  • 内部异常为null..是ftp。通过winscp im使用ftp协议
  • 其具有显式 SSL 的 FTPS
  • 还需要附加 SSL 证书以及 c# 代码。我在启用 SSL 的情况下完成了必要的编码,并且成功了
猜你喜欢
  • 2017-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-28
相关资源
最近更新 更多