2012-10-02 79 views
4

我目前在我的一個項目中面臨一個非常奇怪的問題。系統IOException流讀取與夏普SSH結束

我已經在我的代碼中實現了Tamir Gal的Sharp SSH Library,以便爲每個FTP上傳一些文件。 當我在調試模式下運行代碼時,一切正常。但是,當我生成解決方案,並與內置的版本試試吧,我得到一個System.IO.IOException:

Tamir.SharpSsh.jsch.JSchException: Session.connect: System.IO.IOException: End of IO Stream Read at Tamir.SharpSsh.jsch.IO.getByte(Byte[] array, Int32 begin, Int32 length) 
at Tamir.SharpSsh.jsch.Session.read(Buffer buf) 
at Tamir.SharpSsh.jsch.User.Auth.start(Session session) 
at Tamir.SharpSsh.jsch.UserAuthNone.start(Session session) 
at Tamir.SharpSsh.jsch.Session.connect(Int32 connectTimeout) 
at Tamir.SharpSsh.jsch.Session.connect(Int32 connectTimeout) 
at Tamir.SharpSsh.jsch.SshBase.ConnectSession(Int32 tcpPort) 
at Tamir.SharpSsh.jsch.SshBase.Connect(Int32 tcpPort) 
at Tamir.SharpSsh.jsch.SshBase.Connect() 

它看起來像有與數據流(你好船長明顯:)!)問題,所以本程序甚至未建立完成連接方法。我只是不明白爲什麼在調試時一切正常。 dll在構建過程中被正確複製。

的代碼看起來是這樣的:

sftpClient = new Sftp(this.ftpHost, this.ftpUser, this.ftpPassword); 
sftpClient.Connect(); 

所有的變量有正確的價值觀,我可以像Filezilla的客戶端使用它們連接到SFTP服務器。

如果有人能給我一個提示或者有類似的問題,我會非常感謝每一個評論。

謝謝大家,提前祝你有美好的一天。

+0

我必須在2008r2服務器上使用sharpsshtest.exe測試SSH,之後才能解決這個問題。必須註冊該dll或類似的東西。 – 2013-06-06 21:20:56

回答

19

我的同事剛剛找到了解決辦法:

在SharpSSH你有3名的dll:

  • Org.Mentalis.Security.dll
  • Tamir.SharpSSH.dll
  • DiffieHellman.dll

因爲我從來沒有在代碼中引用Org.Mentalis.Security.dll我完全忘了複製它d通過構建過程。正因爲如此,SharpSSH所傳遞的整個安全層無法訪問,這就是導致錯誤的原因。

我希望這個線程可以幫助其他一些不知情的人。 :)

+2

我曾經做過一些更新SharpSSH的工作。我有一個版本,它擁有一個DLL @ https://bitbucket.org/mattgwagner/sharpssh。我還強烈建議你在Codeplex上查看SSH.net,以獲得更好,更好的SSH庫。 – MattGWagner

+0

+1你幫了我很多!我面臨同樣的問題 –