Domanda

Sto pensando di utilizzare codice seguente, ma voglio trasferire centinaia di file e non vedo praticabile per collegare e scollegare in ogni trasferimento di file.

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();

Quali opzioni ho a disposizione per caricare tutti questi file utilizzando una singola connessione?

È stato utile?

Soluzione

Non ho verificato che questo è vero, ma nella mia rapida 30 secondi di ricerca, se si imposta

request.KeepAlive = true;

su ogni richiesta di creare, tranne l'ultimo, a quanto pare solo il primo FtpWebRequest effettua una connessione di accesso completo.

Poi, quando si crea l'ultima FtpWebRequest, set

request.KeepAlive = false;

e si chiuderà la connessione quando fatto. È possibile verificare questo se si ha accesso ai log del server FTP.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top