2010-01-04 8 views
0

fonctionne test suivant ...System.Net.FtpWebRequest GetDateTimestamp appel meurt

public void test1() 
    { 
    string server="ftp://myserver.com/dev"; 
    string userName="myusername"; 
    string password="mypassword"; 

    FtpWebRequest req = (FtpWebRequest)WebRequest.Create(server); 
    req.Credentials = new NetworkCredential(userName, password); 
    req.Method = WebRequestMethods.Ftp.ListDirectoryDetails; 
    req.Timeout = 30000; 
    req.UseBinary = false; 
    req.EnableSsl = false; 
    req.UsePassive = false; 
    req.KeepAlive = true; 

    using(FtpWebResponse resp = (FtpWebResponse)req.GetResponse()) 
    { 
     using (StreamReader sr = new StreamReader(resp.GetResponseStream())) 
     { 
      string fileRecord = sr.ReadLine(); 
      while (fileRecord != null) 
      { 
       Console.WriteLine(fileRecord); 
       fileRecord = sr.ReadLine(); 
      } 
     } 
    } 
    } 

Bien que le test suivant échoue ...

public void test2() 
    { 
    string server="ftp://myserver.com/dev"; 
    string userName="myusername"; 
    string password="mypassword"; 

    FtpWebRequest req = (FtpWebRequest)WebRequest.Create(server); 
    req.Credentials = new NetworkCredential(userName, password); 
    req.Method = WebRequestMethods.Ftp.GetDateTimestamp; 
    req.Timeout = 30000; 
    req.UseBinary = false; 
    req.EnableSsl = false; 
    req.UsePassive = false; 
    req.KeepAlive = true; 

    using(FtpWebResponse resp = (FtpWebResponse)req.GetResponse()) 
    { 
     using(StreamReader sr = new StreamReader(resp.GetResponseStream())) 
     { 
      Console.WriteLine(resp.LastModified); 
     } 
    } 
    } 

avec le message d'erreur:

Méthode d'essai test2 jeté l'exception: System.Net.WebException: Le serveur distant a renvoyé une erreur: (550) Fichier indisponible (par exemple, fichier introuvable, pas d'accès). MISE À JOUR: J'ai essayé avec un autre site ftp (unix) qui utilise le port # par défaut, donc l'url est "ftp://myserver.com/dev" - et le GetDateTimestamp() meurt toujours avec la même erreur.

J'ai mis à jour la ligne d'objet et le corps de la question pour refléter correctement ma requête.

Répondre

2

S'il vous plaît ajouter plus d'informations.

Devinez jusqu'à présent: Vous essayez de

  • a) Est-ce un ls sur le serveur FTP (travaux)
  • b) Obtenir à l'horodatage du serveur FTP (ne fonctionne pas)

Puisque tout le reste semble le même (adresse etc), je suppose que les deux regardent les mêmes données. J'imagine qu'un ls fonctionne juste quand vous êtes connecté. Mais quel horodatage essayez-vous d'atteindre? La documentation pour WebRequestMethods.Ftp.GetDateTimestamp dit

Represents the FTP MDTM protocol method that is used to retrieve the date-time stamp from a file on an FTP server.

(souligné par moi)

Quel fichier? Autant que je peux voir, vous spécifiez seulement un dossier (pas sûr que cela fonctionne)? Avez-vous essayé ceci avec "ftp://myserver.com/dev/text.txt"?

+0

@Benjamin - cela peut très bien être le problème. Laissez-moi voir ce qui se passe quand la cible est un fichier. Dans ce cas, je devrai changer mon code pour déduire différemment l'heure de la date pour un forlder. –

+0

@Benjamin - c'est exactement ce qui se passait. Cela fonctionne très bien avec un fichier. Merci beaucoup. –

0

Il semble que les URI des 2 exemples soient les mêmes, vos cas de test ne correspondent pas à la description du problème. Peux-tu être plus précis?

(en général le plus facile d'ajouter avoir un seul bout de code exemple avec une ou deux lignes qui sont mises en évidence la rupture.)