C# 4.0 无法为WinSCP会话类创建实例

C# 4.0 无法为WinSCP会话类创建实例,c#-4.0,sftp,winscp,winscp-net,C# 4.0,Sftp,Winscp,Winscp Net,我使用WinSCP在C程序中下载和上传文件。我的代码是这样的 public Session OpenSftpSession () { SessionOptions sessionOptions = new SessionOptions (); sessionOptions.Protocol = WinSCP.Protocol.Sftp; sessionOptions.HostName = this.hostName_; se

我使用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 ();
它终止了。我甚至没有任何例外,它只是终止了

谢谢,
达珊

尝试加载您的
会话选项
,就像上的示例一样

例如,您的代码看起来像:

 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;
}

我也有同样的问题,即使是在跟踪zmx的样本时。它只是简单地拒绝实例化会话对象。我最终做了以下几件事:

  • 正在下载5.2.4 beta版(包括.NET程序集和可移植可执行文件)
  • 添加对WinSCPnet.dll的引用(注意名称)
  • WinSCP.exe放置在项目的根文件夹中
  • 将其属性(WinSCP.exe)设置为“生成操作”为“None”,以及“复制到输出目录”为“Copy if newer

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

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

    D:\Orient Service\FinpayTransferservice-webservice\bin\x86\Debug
    

    如果OP的问题与
    winscp.exe
    有关,则只有在调用
    Session.Open
    后,问题才会出现。
    会话
    构造函数未使用
    winscp.exe