"andrea84" <andrea84> wrote in message
news:363306@...
Ciao ragazzi, ho un problema con l'upload di alcuni file tramite FTP. Qui il codice:
StreamReader wStream = null;
Stream wRequestStream = null;
string wFtpPath = ftpPath + fileToSend;
FtpWebRequest wRequest = (FtpWebRequest)WebRequest.Create( wFtpPath ); wRequest.Method = WebRequestMethods.Ftp.UploadFile;
wRequest.Credentials = new NetworkCredential( userName , password ); wRequest.KeepAlive = true;
wRequest.UseBinary = true;
wRequest.UsePassive = true;
FileStream stream = File.OpenRead( fileLocalPath + fileToSend ); byte[] buffer = new byte[stream.Length];
stream.Read( buffer , 0 , buffer.Length );
stream.Close( );
Stream reqStream = wRequest.GetRequestStream( );
reqStream.Write( buffer , 0 , buffer.Length );
reqStream.Close( );
Richiamo questo metodo per circa un centinaio di file, uno dietro l'altro e
a volte mi torna indietro questo messaggio:
"Errore del server remoto: (500)".
Successivamente all'upload rionomino anche il file.
L'errore non lo da per colpa del file o per il comando, ma "random". Ho provato a rieseguire l'upload dei medesimi file e lo ha dato su file diversi(in genere su 100 file lo da su 2 o 3).
Pensavo che magari può essere un problema di limite del server FTP (che sinceramente non conosco), in particolare di connessioni simultanee. C'è un modo per verificare che abbia finito l'upload?
Ora sto comunque facendo una prova mettendo la proprietà keepAlive a false.
Grazie a tutti.
Il 500 è un errore generico, dovresti intercettarlo e capire cosa va in eccezione "lato server".
Se sfrutti il modello asincrono BeginGetResponse/EndGetResponse potresti gestire meglio il tutto.