5

私は現在、私のプロジェクトの1つで本当に奇妙な問題に直面しています。

FTPごとにいくつかのファイルをアップロードするために、コードにTamirGalのSharpSSHライブラリを実装しました。コードをデバッグモードで実行すると、すべてが正常に機能します。しかし、ソリューションをビルドして、そのビルドバージョンで試してみると、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!:))。そのため、プログラムはConnectメソッドを終了することすら確立していません。デバッグ中にすべてが機能する理由がわかりません。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 に答える