通过C#.Net发送时的SFTP或FTPS

时间:2012-07-11 15:52:49

标签: c# sftp ftps

我读过这篇文章:

  

这两者彼此非常不同,尽管他们都瞄准了   服务于同一目的。 SFTP使用单个信道进行传输   接收所有相关数据,而FTPS使用另一个通道   动态决定数据。 FTPS经常遇到问题   通过防火墙,因为它不知道正在的端口   数据使用,并且无法允许通过端口的流量。 FTPS   以文本格式发送消息,允许人们读取日志和   确定会话期间发生的事情。这是不可能的   SFTP,因为消息不是文本,而是二进制。

     

了解更多:FTPS和SFTP之间的区别| |之间的区别   FTPS与SFTP   http://www.differencebetween.net/technology/internet/difference-between-ftps-and-sftp/#ixzz20KUGWr00

我不想假设任何事情,因为如果我错了,这会让我的工作变得更难,但当我通过C#/ .Net4发送文件时,这样:

  var request = (FtpWebRequest) WebRequest.Create(FtpUrl + filename);
    request.Method = WebRequestMethods.Ftp.UploadFile;

    var secureString = new SecureString();
    foreach (var b in Encoding.Default.GetBytes(FtpPassword))
      secureString.AppendChar((char) b);
    request.Credentials = new NetworkCredential(FtpUsername, secureString);
    request.EnableSsl = true;

这是SFTP还是FTPS?由于EnableSsl,我假设FTPS正如文章所示。

如果不是SFTP,我可以将其更改为SFTP吗?我在通过防火墙发送时遇到问题。

谢谢!

1 个答案:

答案 0 :(得分:6)

SFTP使用SSH传输文件。如果在远程计算机上运行ssh,则可以将其更改为此值。我不确定C#是否支持它。根据这个:http://social.msdn.microsoft.com/Forums/en-US/netfxnetcom/thread/817b4f71-7e88-4b62-b48a-8a5edca800fd/答案是否定的。

FTPS正在将FTP添加到FTP上。有点像HTTPS就是HTTP之上的SSL。

您的代码肯定使用FTPS。

您的防火墙问题可能在此解释:http://en.wikipedia.org/wiki/Ftps#Firewall_incompatibilities