FTP múltiples archivos en C # sin restablecer la conexión

El protocolo FTP está diseñado para admitir un canal de control y utilizar ese canal de control para indicarle al servidor que abra conexiones TCP y transfiera archivos.

El servidor que envía o recibe archivos NO tiene que ser el mismo que el servidor al que está conectado el canal de control FTP. Puede ser una conexión de tipo "triángulo".

También permite que el cliente inicie sesión una vez en el canal de control y le diga repetidamente al servidor que transfiera archivos, sin volver a iniciar sesión en el canal de control.

Aparentemente, este concepto se ha escapado por completo de MS cuando crearon C #FtpWebRequest clase.

Necesito hacer exactamente para lo que fue diseñado el protocolo FTP:

Conectarse a un servidor

Pase en credenciales

Crear directorios (e ignorar felizmente un error 'ya existe')

Transfiere archivos repetidamente al servidor

Cerrar sesión en el canal de control

Estoy seguro de que no veo esa habilidad en elFtpWebRequest clase. O cualquier cosa que parezca permitir ese tipo de flujo en el código C #.

He mirado:

ahttps://social.msdn.microsoft.com/Forums/vstudio/en-US/9e14bc29-25bf-45ec-9303-1d8ffda2064d/c-ftp-send-multiple-files-log-in-only-once?forum= csharpgeneral

y enSube varios archivos a FTP en c #

y otros.

Pero nada de esto parece permitir el control de esa manera.

Puedo especificar elKeepAlive propiedad, pero el bucle tiene que llamar repetidamenteWebRequest.Create(targetName); función, que crearía una NUEVA conexión y obtendría una NUEVA respuesta. Luego caen fuera del alcance o quedan huérfanos, por lo que, por definición, se destruyen. Por lo tanto, la conexión DEBE estar cerrada y luego deberá volver a abrirse. Para una conexión de datos, está bien, pero ¿dónde está la capacidad de manipular el puerto de CONTROL?

La clase no permite al usuario diferenciarse de un puerto CONTROL y un puerto DATA, como define la especificación FTP.

¿Hay alguna forma de usar una clase C # para hacer FTP de la manera en que debía ser? Porque en la mentalidad estrecha de Microsoft, todo el mundo parece un protocolo HTTP Get / Response.

Cualquier consejo es apreciado.

-Scotty

Respuestas a la pregunta(2)

Su respuesta a la pregunta