Есть несколько вещей, которые вы можете сделать. Вы можете создать журнал сеансов, который сообщает вам (в подробностях), что произошло во время передачи файла. Вы также можете поместить блок try-catch около mySession.Open(mySessionOptions)
, чтобы поймать ошибку.
Наконец, используйте mySession.FileExists(remotepath)
, чтобы проверить, находится ли файл на сервере.
Dim mySessionOptions As New SessionOptions
With mySessionOptions
.Protocol = Protocol.Sftp
.HostName = "999.999.999.999"
.UserName = "login"
.Password = "mypassword"
.SshHostKeyFingerprint = "ssh-dss 1024 99:87:99:4d:99:a3:99:b9:99:15:99:f2:99:87:88:b2"
End With
Using mySession As Session = New Session
' Will continuously report progress of synchronization
AddHandler mySession.FileTransferred, AddressOf FileTransferred
' Connect
mySession.SessionLogPath = "C:\Users\yourName\yourFolder\Sessionlog.log"
'Use Try-Catch to check for error in connection
Try
mySession.Open(mySessionOptions)
Catch ex As Exception
MessageBox.show(ex.Message)
mySession.Close()
Exit Sub
End Try
'Check to see if file exist already on server
If mySession.FileExists(remotePath) Then
MessageBox.Show("File Exists on Server")
mySession.Close()
Exit Sub
End If
mySession.PutFiles("C:\Users\yourName\yourFolder\yourfile.dat", remotePath)
mySession.Close()
End Using
Не забывайте проверять созданный вами журнал, чтобы точно видеть, что произошло.
Вам также необходимо проверить, удалось ли «PutFiles» или нет. Для этого используйте '.Check()'. Например: 'mySession.PutFiles (« C: \ Users \ yourName \ yourFolder \ yourfile.dat », remotePath) .Check()'. См. [Захват результатов операций] (https://winscp.net/rus/docs/library_session#results). –