Не удалось создать экземпляр для класса сеанса WinSCP
Я использую 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 ();
это заканчивается. Я даже не получаю никаких исключений, это просто заканчивается.
Спасибо, Даршан.
3 ответа
У меня была такая же проблема, даже когда я следовал примеру zmx. Он просто отказался создавать экземпляр объекта Session. В итоге я сделал следующее (из инструкции на сайте WinSCP.net):
- Загрузка бета-версии 5.2.4 (как сборка.NET, так и переносимый исполняемый файл).
- Добавление ссылки на WinSCPnet.dll (обратите внимание на название).
- Размещение WinSCP.exe в корневой папке проекта.
- Установка его свойств (WinSCP.exe) с помощью "Build Action" в " None " и "Copy to Ouput Directory" в "Copy to newer".
DLL и EXE в сочетании заставляют его работать как положено. Простое использование DLL не работает, так как она просто обеспечивает обертку вокруг EXE. Кроме того, более старые версии сборки WinSCP имеют имя WinSCP.dll, которое конфликтует с именем EXE-файла; поэтому наличие как DLL, так и EXE в папке bin не работает.
Просто вставьте WinScp.exe и winScp.dll в папку приложения, как я сделал:
D:\Orient Service\FinpayTransferservice-webservice\bin\x86\Debug
Попытка загрузки вашего sessionOptions
как образец на веб-сайте WinSCP.
Например, ваш код будет выглядеть примерно так:
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;
}