Pregunta

Estoy pensando en usar siguiente código, pero yo quiero transferir cientos de archivos y no se ve viable para conectar y desconectar en cada transferencia de archivos.

request = (FtpWebRequest) FtpWebRequest.Create(FtpAddress + file);

request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(User, Pass);

request.UsePassive = IsPassive;
request.UseBinary = true;
request.KeepAlive = false;

FileStream fs = File.OpenRead("");
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();

Stream ftpStream = request.GetRequestStream();
ftpStream.Write(buffer, 0, buffer.Length);

ftpStream.Close();

¿Qué opciones tengo para subir todos estos archivos a través de una única conexión?

¿Fue útil?

Solución

Aún no ha comprobado que esto es cierto, pero en mi rápida 30 segundos de búsqueda, si define

request.KeepAlive = true;

en cada petición que se crea, excepto la última, al parecer sólo el primer FtpWebRequest hace una conexión de acceso completa.

A continuación, cuando se crea el último FtpWebRequest, juego

request.KeepAlive = false;

y se cerrará la conexión cuando haya terminado. Esto se puede comprobar si tiene acceso a los registros del servidor FTP.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top