1

我正在使用 WinSCP 在 C# 程序中下载和上传文件。我的代码看起来像这样

    public Session OpenSftpSession ()
    {
       SessionOptions sessionOptions = new SessionOptions ();
       sessionOptions.Protocol = WinSCP.Protocol.Sftp;
       sessionOptions.HostName = this.hostName_;
       sessionOptions.UserName = this.userName_;
       sessionOptions.Password = this.password_;
       sessionOptions.SshHostKeyFingerprint = this.sshHostKeyFingerprint_;

       Session session = null;
       try
       {
           session = new Session ();
           session.Open (sessionOptions);
       }
       catch (Exception ex)
       {
           return null;
       }

       return session;
    }

当程序执行行

    session = new Session ();

它终止。我什至没有得到任何异常它只是终止。

谢谢,达山。

4

3 回答 3

0

即使遵循 zmx 的示例,我也遇到了同样的问题。它只是简单地拒绝实例化 Session 对象。我最终做了以下事情(来自WinSCP.net 网站上的说明):

  1. 下载版本 5.2.4 测试版(.NET 程序集和可移植可执行文件)。
  2. 添加对WinSCPnet.dll的引用(注意名称)。
  3. WinSCP.exe放在项目的根文件夹中。
  4. 使用“ None ”的“Build Action”和“ Copy if newer ”的“Copy to Ouput Directory”设置它的属性(WinSCP.exe)。

DLL 和 EXE 的组合使其按预期工作。仅仅使用 DLL 是行不通的,因为它只是为 EXE 提供了一个包装器。此外,旧版本的 WinSCP 程序集的名称 WinSCP.dll 与 EXE 的名称冲突;所以在 bin 文件夹中同时拥有 DLL 和 EXE 是行不通的。

于 2013-09-16T18:50:06.427 回答
0

只需将 WinScp.exe 和 winScp.dll 粘贴到您的应用程序文件夹中,就像我所做的那样:

D:\Orient Service\FinpayTransferservice-webservice\bin\x86\Debug
于 2016-07-21T12:42:27.150 回答
-1

尝试在WinSCP 网站sessionOptions上加载您喜欢的示例。

例如,您的代码将类似于:

 public Session OpenSftpSession ()
{
   SessionOptions sessionOptions = new SessionOptions
   { 
       Protocol = WinSCP.Protocol.Sftp;
       HostName = this.hostName_;
       UserName = this.userName_;
       Password = this.password_;
       SshHostKeyFingerprint = this.sshHostKeyFingerprint_;
   }

   Session session = null;
   try
   {
       session = new Session ();
       session.Open(sessionOptions);
   }
   catch (Exception ex)
   {
       return null;
   }

   return session;
}
于 2013-09-09T17:48:40.650 回答