Ciao a tutti.
Ho un problema con una mini applicazione di Upload via FTP da integrare ad un sistema già esistente.
Il problema consiste nel non avere un feedback di termine upload su file di grossa dimensione. Questo comporta che la pagina di upload resta in standby e chi s'è visto s'è visto.
Il problema non accade invece con file piccoli.
Di seguito l'estrazione dell'ultima versione della funzione di upload che sto realizzando.


Codice PHP:
public void UploadFile()
        {
            
object w = new object();
            try
            {
                
string nameFile FTP_FileUpload.FileName;
                
bool okUpload false;
                if (!
Ftp_ExistFile(FTP_FileUpload.FileName))
                {
                    
okUpload true;
                }
                else
                {
                    if (
nameFile == FileEsistente)
                    {
                        
okUpload true;
                    }
                    else
                    {
                        throw new 
Exception("ATTENZIONE!
Il file " 
FTP_FileUpload.FileName " è già presente nella directory " SubDir "
Rinominare il file e ripetere l'operazione oppure selezionare il file dalla directory attraverso la funzionalità di ricerca."
);
                    }

                }

                if (
okUpload)
                {

                    
#region Upload del File

                    //Apro una connessione
                    
FtpWebRequest ftp = (FtpWebRequest)WebRequest.Create(FTP_Server SubDir "/" nameFile);
                    
ftp.UsePassive true;
                    
ftp.ReadWriteTimeout 10000000;
                    
ftp.Timeout 10000000// Any big number
                    //ftp.KeepAlive = true;

                    //Aggiungo le credenziali
                    
ftp.Credentials = new NetworkCredential(FTP_UserFTP_PWD);

                    
//Indico il comando di uplaod
                    
ftp.Method WebRequestMethods.Ftp.UploadFile;
                    
byte[] arrayFile = new byte[FTP_FileUpload.PostedFile.ContentLength];
                    
Stream read FTP_FileUpload.PostedFile.InputStream;

                    
//Riempio l'array
                    
read.Read(arrayFile0FTP_FileUpload.PostedFile.ContentLength);
                    
ftp.GetRequestStream();

                    
//Scrivo il contenuto dell'array
                    
((Stream)w).Write(arrayFile0arrayFile.Length);
                    
//((Stream)w).Close();

                    #endregion

                    #region Verifica Stato Upload

                    
int FileDimension 0;
                    while (
FTP_FileUpload.FileBytes.Length FileDimension)
                    {
                        
FtpWebRequest _FtpRequest = (FtpWebRequest)WebRequest.Create(FTP_Server SubDir "/" nameFile);
                        
_FtpRequest.Credentials = new NetworkCredential(FTP_UserFTP_PWD);

                        
//Richiesta ListDirectory
                        
_FtpRequest.Method WebRequestMethods.Ftp.ListDirectoryDetails;

                        
//Inoltro richiesta e attesa risposta
                        
FtpWebResponse _FtpResponse = (FtpWebResponse)(_FtpRequest.GetResponse());

                        
//La risposta è uno stream
                        
StreamReader sr = new StreamReader(_FtpResponse.GetResponseStream(), System.Text.Encoding.ASCII);

                        
string file sr.ReadToEnd();

                        
FileDimension Convert.ToInt32(file.Split(' ')[file.Split(' ').Length 5]);
                    }
                    
#endregion

                
}

            }
            catch (
Exception ex)
            {
                throw 
ex;
            }
            finally 
            {
                ((
Stream)w).Close();
                
//((Stream)w).Dispose();
            
}
            
            return;

        } 


Grazie in anticipo.
Sergio

P.S.
La "Verifica Stato Upload" è stata aggiunta per vedere tramite debug l'effettivo upload del file. Probabilmente verrà successivamente integrata per comunicare l'avanzamento del processo.