Użycie zestawu .NET programu WinSCP do przesłania pliku. OperationResultBase.Check()
rzuca się następujący błąd:WinSCP: Jak upewnić się, że przesyłanie SFTP zostanie zmienione z .zip.filepart na .zip?
WinSCP.SessionRemoteException: Transfer was successfully finished, but temporary transfer file 'testfile.zip.filepart' could not be renamed to target file name 'testfile.zip'. If the problem persists, you may want to turn off transfer resume support.
Wydaje się, że to się dzieje w przypadku każdego pliku zip, który próbuję wysłać. Jeśli robi różnicę, są to pliki zip, które zostały utworzone przy użyciu biblioteki DotNetZip.
Kod, który używam, podjęte prawie bezpośrednio z przykładu w dokumentacji WinSCP:
public void uploadFile(string filePath, string remotePath)
{
TransferOptions transferOptions = new TransferOptions();
transferOptions.TransferMode = TransferMode.Binary;
TransferOperationResult transferResult;
transferResult = currentSession.PutFiles(filePath, remotePath, false, transferOptions);
transferResult.Check();
foreach (TransferEventArgs transfer in transferResult.Transfers)
{
Console.WriteLine("Upload of {0} succeeded", transfer.FileName);
}
}
Discussion over at the WinSCP forum wskazuje, że zespół nie pozwalają jeszcze programową kontrolę wsparcia transferu wznowienia. Czy istnieje obejście tego problemu?
wydaje dziwne mi się, że przesyłanie używa innego pliku niż faktycznie żądanego pliku. Czy masz nad tym kontrolę? – sarnold
@sarnold, z dokumentacji WinSCP: "Podczas przesyłania pliku z protokołem SFTP, jest on najpierw przesyłany do pliku tymczasowego z rozszerzeniem .filepart, dopiero po zakończeniu transferu rozszerzenie jest usuwane." – sigil
Jeśli masz dostęp do serwera, możliwe jest uruchomienie czegoś takiego jak monitor procesu z SysInternals, aby zobaczyć, co się stanie, gdy zakończy się przesyłanie pliku. Na przykład program antywirusowy może rozpocząć skanowanie pliku w momencie zamknięcia pliku i nadal mieć dostęp do pliku po próbie zmiany nazwy. – sgmoore