如何使用SFTP通过ASP.NET上传服务器中的文件?

时间:2017-06-22 17:57:37

标签: c# asp.net sftp

我正在使用SharpSsh通过ASP.NET使用SFTP将文件传输到服务器。

以下是我的源代码。但是我收到了错误!

    using System.Collections;
    using System.Threading;
    using System.IO;
    using Tamir.SharpSsh;
    using Tamir.Streams;

    protected void btnUpload_Click(object sender, EventArgs e)
    {
        if (fuUploadFile.HasFile)
        {
           string _ftpURL = "ftp://22.00.333.444/"; 
           string _UserName = "admin";     
           string _Password = "admin123";  
           int _Port = 22;                 
           string _ftpDirectory = "/TestFTP";
           string LocalDirectory = 
           Server.MapPath(fuUploadFile.PostedFile.FileName); 
           string FileName = fuUploadFile.FileName;;    

           Sftp oSftp = new Sftp(_ftpURL, _UserName, _Password);
           oSftp.Connect(_Port);
           oSftp.Put(LocalDirectory , _ftpDirectory + "/" + FileName);
           oSftp.Close();
        }
    }

当我尝试运行代码时,我收到以下异常,请帮助我解决这个问题。

    System.Net.Sockets.SocketException: The requested name is valid, but no data of the requested type was found
    at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6)
    at System.Net.Dns.GetHostByName(String hostName)
    at Tamir.SharpSsh.java.net.Socket..ctor(String host, Int32 port)
    at Tamir.SharpSsh.jsch.Util.createSocket(String host, Int32 port, Int32 timeout)

1 个答案:

答案 0 :(得分:0)

sftpHost构造函数的Tamir.SharpSsh.Sftp参数采用IP地址或主机名,而不是URL。即使它使用了网址,也会是sftp://,而不是ftp://

所以它应该是:

Sftp oSftp = new Sftp("22.00.333.444", _UserName, _Password);

但当然22.00.333.444不是有效的IP地址。

我强烈反对您使用SharpSSH。这是一个死的项目。

有关替代方案,请参阅: