2009-10-13 3 views
7

cerco di elencare i dettagli dei file utilizzando FtpWebRequest ma molto spesso non riesce con un WebException e mostra l'errore 530 Utente non loggato..Net FtpWebRequest non riesce a volte

Come è possibile, che funziona un po 'di tempo utilizzando le stesse credenziali?

Estratto dal codice:

 reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpuri)); 
     reqFTP.UseBinary = true; 
     reqFTP.Credentials = new NetworkCredential(userName, password); 
     string[] downloadFiles = new string[0]; 
      reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails; 
      WebResponse response = reqFTP.GetResponse(); 
      StreamReader reader = new StreamReader(response.GetResponseStream()); 
      downloadFiles = reader.ReadToEnd().Replace("\r\n", "¤").Split('¤'); 
      reader.Close(); 
      response.Close(); 
+0

Ho avuto questo problema esatto. Sembra che succeda più spesso quando sono già stato collegato al server per un po ', poi cambio directory e faccio una lista. – Jonathan

+0

Il tuo problema è simile al bug incorporato in Windows Explorer FTP (ovvero: Internet Explorer integrato in Explorer.exe) dove dopo aver navigato in una directory avrebbe "perso" le tue credenziali e ti avrebbe chiesto ripetutamente di accedere. Non ho mai sentito parlare di questo comportamento quando si utilizza dotnet, però. –

risposta

1

provare a impostare

reqFTP.KeepAlive = false; 

e, eventualmente, se quanto sopra non funziona

reqFTP.UsePassive = false; 

ho scoperto che impostarle a falso ha ridotto le occorrenze di questo errore (che viene generato dal server FTP) considerevolmente.