5

我目前在我的一个项目中面临一个非常奇怪的问题。

我在我的代码中实现了 Tamir Gal 的 Sharp SSH 库,以通过 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()

看起来数据流有问题(Hello Captain Obvious!:)),所以程序甚至没有建立完成连接方法。我只是不明白为什么在调试时一切正常。dll 在构建过程中被正确复制。

代码如下所示:

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

所有变量都有正确的值,我可以在 Filezilla 等客户端中使用它们连接到 SFTP 服务器。

如果有人可以给我一个提示或有类似的问题,我会非常感谢每一个评论。

提前谢谢大家,祝您有美好的一天。

4

1 回答 1

20

我的同事刚刚找到了解决方案:

在 SharpSSH 中,您有 3 个 Dll:

  • org.mentalis.security.dll
  • Tamir.SharpSSH.dll
  • DiffieHellman.dll

因为我从来不需要在代码中引用 Org.Mentalis.Security.dll 我完全忘记在构建过程中复制它。因此,无法访问 SharpSSH 中继的整个安全层,这就是导致错误的原因。

我希望这个线程可以帮助其他一些健忘的人。:)

于 2012-10-02T11:54:55.857 回答