webrequestmethods net conectar c# transactions ftp

net - Código de transferencia de archivos c#ftp 100% infalible(con transacciones si es posible)



ftpwebrequest (3)

Hola chicos, quiero escribir una pequeña biblioteca de clase de cliente c # ftp que básicamente necesita transferir archivos a una ubicación ftp

lo que quiero es un código 100% infalible en el que pueda obtener algún tipo de reconocimiento de que la transferencia del archivo FTP ha sido 100% exitosa o fallida

no se requiere soporte de reanudar

bueno tener (pero secundario):

algún tipo de transacción distribuida donde solo si la transferencia de archivos es exitosa para un archivo, actualizo mi db para ese archivo en particular con 1 (verdadero) ... si falló, entonces db se actualizará con 0 (falso)

pero supongamos que la transferencia del archivo ftp fue exitosa, pero por cualquier razón que el archivo db no se pueda actualizar, entonces el archivo sobre ftp debe borrarse; puedo hacerlo fácilmente usando el sucio código c # (donde intento manualmente eliminar el archivo si actualiza db) ha fallado)

pero lo que busco exactamente es una transacción basada en el sistema de archivos a través de ftp ... por lo que tanto la transferencia de archivos como la actualización de db no se cometen hasta que ambos tengan éxito (por lo tanto, no es necesario eliminar manualmente)

¿alguna pista?


intente usar Ftp con WCF


Después de haber tenido la "alegría" de escribir una biblioteca FTP yo mismo, este es mi consejo

1) No será fácil, porque los servidores FTP devuelven diferentes retornos del mismo comando (como información de directorio, comandos ftp regulares y prácticamente todo).
2) Esto tomará más tiempo de lo que piensas
3) El sueño de una transferencia 100% infalible no sucederá, a menos que controle el servidor FTP y agregue un nuevo comando FTP para que pueda comparar hashes de archivos.


Bastante si fuera a hacer esto de nuevo, y mi objetivo era transferir archivos (y no aprender de hacer la biblioteca) compraría una biblioteca ya hecha,


.NET tiene un cliente FTP que puede usar. No sé cuán robusto es frente a los caprichos del servidor FTP; tendrás que probarlo contra el servidor FTP de tu cliente. En cuanto a verificar que la carga fue exitosa, las únicas herramientas que tienes son (1) asegurarte de que no hubo ningún error de transporte durante la carga, (2) validar el tamaño del archivo cuando hayas terminado.

El servidor FTP no admitirá transacciones, por lo que tendrá que administrarlo usted mismo, pero este no es realmente un escenario complicado. Use una transacción para la actualización de DB; retroceder la carga FTP es una llamada.