sshnet / sshnet/SSH.NET

Can't delete file right after creating them

Abierto
#394 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
C#
Estrellas
4.4k
Forks
993
Merge medio
9 d 21 h
PR fusionados (30 d)
1

Descripción

I am wondering if this is an issue or my process flaw. I am not be able to delete a file that just created. But, on WinSCP, I am able to delete them manually.

There is a case where the file got locked and I can't delete them because it says that "Permission Denied" and I can't delete them as SFTP user or OS (windows) user. I did checked that the file is owned by Administrator.

Here is the code that I use to produce the problem.

private static void uploadZip(string fTPAddress, string ftpPath, string fTPUsername, string fTPPassword, string zipFilePath, string zipFileName) {
	// Build username/password
	var passwordAuth = new PasswordAuthenticationMethod(fTPUsername, fTPPassword);

	// Build connection
	var connectionInfo = new ConnectionInfo(fTPAddress, fTPUsername, passwordAuth);

	using (var client = new SftpClient(connectionInfo)) {
		Console.WriteLine("Connecting " + fTPAddress + "... ");
		client.Connect();
		Console.WriteLine(client.IsConnected ? "Connected!" : "Disconnected.");

		// Upload file
		try {
			Console.WriteLine("Creating new path + file...");
			client.Create(ftpPath + zipFileName);
			Console.WriteLine("Created!");

			if (client.Exists(ftpPath + zipFileName)) {
				Console.WriteLine(ftpPath + zipFileName + " Exists!");
				Console.WriteLine("Deleting " + ftpPath + zipFileName + "... ");
				client.Delete(ftpPath + zipFileName);
				Console.WriteLine("Deleted");
			} else {
				Console.WriteLine("Uploading file...");
				using (FileStream stream = File.Open(zipFilePath, FileMode.Open)) {
					client.UploadFile(stream, ftpPath + zipFileName);
				}
				Console.WriteLine("Uploaded!");
			}
		} catch (Exception e) {
			Console.WriteLine("-- Something wrong on execution: " + e.Message);
			Console.WriteLine(e.StackTrace);
		} finally {
			Console.WriteLine("Disconnecting... ");
			client.Disconnect();
			Console.WriteLine(client.IsConnected ? "Connected!" : "Disconnected.");

			Console.WriteLine("Deleting " + zipFilePath + "...");
			File.Delete(zipFilePath);
			Console.WriteLine(zipFilePath + " Deleted...");
		}
	}
}

The output:
C:\Users\btobias>C:\WorkingCopies\PCCDBAssembly\PCCDB.Docs.Run\bin\Dev\PCCDB.Docs.Run.exe
( 0 milliseconds) Type found: PCCDB.PCC.Library.LibraryPatronDump
( 0 milliseconds) Method found: LibraryPatronDumpExe
( 1 milliseconds) Parameter 0: ftpAddress (System.String): ftp.test.com
( 1 milliseconds) Parameter 1: ftpPath (System.String): /alma/test/
( 1 milliseconds) Parameter 2: ftpUsername (System.String): XXXXX
( 2 milliseconds) Parameter 3: ftpPassword (System.String): XXXXXXXXXXXXXX
( 2 milliseconds) Parameter 4: syncPersonnelIncluded (System.String): Y
( 3 milliseconds) Executing...
( 9292 milliseconds) Connecting ftp.pcci.edu...
( 9528 milliseconds) Connected!
( 9528 milliseconds) Creating new path + file...
( 9539 milliseconds) Created!
( 9546 milliseconds) /alma/test/PatronDump2.zip Exists!
( 9546 milliseconds) Deleting /alma/test/PatronDump2.zip...
( 9553 milliseconds) -- Something wrong on execution: Permission denied
( 9555 milliseconds) at Renci.SshNet.Sftp.SftpSession.RequestRemove(String path)
at PCCDB.PCC.Library.LibraryPatronDump.uploadZip(String fTPAddress, String ftpPath, String fTPUsername, String fTPPassword, String zipFilePath, String zipFileName) in C:\WorkingCopies\PCCDBAssembly\PCCDB.Docs\PCC\Library\LibraryPatronDump.cs:line 94

( 9556 milliseconds) Disconnecting...
( 9607 milliseconds) Disconnected.
( 9607 milliseconds) Deleting C:\Temp\PatronDump2.zip...
( 9609 milliseconds) C:\Temp\PatronDump2.zip Deleted...
( 9609 milliseconds) Finished...
( 9610 milliseconds)
Press any key...

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza con la secuencia notificada SftpClient.Create y client.Delete y, a continuación, inspecciona la llamada SftpSession.RequestRemove que se muestra en el stack trace. Reproduce el resultado de permiso denegado y compáralo con los detalles de propiedad del servidor y de Windows; el trabajo estará terminado cuando se haya establecido si SSH.NET o los permisos del servidor son responsables, con una prueba de regresión específica solo si la biblioteca es la causa.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
csharp
Área
networking
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.