使用WinSCP .NET程序集更改根SFTP目录

问题描述

我正在为一个允许我访问两个特定文件夹及其子文件夹的客户端工作。第一个曾经是我们以前的工作空间,现在我们将切换到第二个。

当我使用WinSCP GUI连接到SFTP时,它将我连接到旧文件夹。但是,我可以通过单击设置并在“远程路径”字段中添加“新”路径来更改此设置。连接后,会话将自动将我带到新的文件夹/工作区。

我的问题是我该如何使用.NET和各自的winscpnet库来做到这一点?

问题是会话的根目录与远程路径不同。

示例:

会话目录为/C/Document/

远程路径为/C/Inetpub/ftproot/username/

当我在终端上使用以下命令时:

winscp.com> open sftp://someone:password;fingerprint=something@ipaddress/C/Inetpub/ftproot/username

winscp.com> put some.txt /in

winscp.com> exit

工作正常!因为如我们所见,我的会话目录为/C/Inetpub/ftproot/username/

是否可以在C#中设置会话根路径?

解决:您是对的,它是虚拟路径,因此/ c / Inetpub而不是c / Inetpub

解决方法

WinSCP .NET程序集不使用工作目录的概念。它始终使用绝对路径。

因此,如果您将GUI会话配置为从/new/path开始,则可以将其用作WinSCP .NET程序集中的绝对路径。

session.PutFiles(@"c:\local\path\*","/new/path/",false,transferOptions);