2017-06-22 99 views
-1

我正在使用SharpSsh通過ASP.NET使用SFTP將文件傳輸到服務器。如何使用SFTP通過ASP.NET上傳服務器中的文件?

以下是我的源代碼。但是我得到錯誤!

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) 
+0

你混淆那個IP?因爲如果不是,它是無效的。 –

+0

另外,我所看到的所有例子都沒有'ftp://'前綴。 –

+0

你爲什麼要在所有變量前面加上下劃線?這不符合正常的C#約定。 – mason

回答

0

Tamir.SharpSsh.Sftp構造的sftpHost參數需要一個IP地址或主機名,而不是URL。即使它使用了一個URL,它將是sftp://,而不是ftp://

所以它應該是:

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

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


我強烈建議您不要使用SharpSSH。這是一個死的項目。

替代方案,請參閱:

+0

你可以請分享鏈接或建議我應該用什麼來實現SFTP? –

+0

只是谷歌的「SFTP .NET」。好的,我已經爲你做了,看到我編輯的答案。 –

相關問題