c# 4 : vérifier si le répertoire FTP existe

J'ai utilisé une classe pour tous mes transferts FTP sorcière bien fonctionner en C# 3.5, mais depuis que je updaded le cadre 4, j'ai quelques problèmes.

Je fais une recherche sur Google, mais pas trouver de solutions.

Surtout avec une méthode pour vérifier si un répertoire existe :

public bool DirectoryExists(string directory)
{
  bool directoryExists = false;
  if (directory.Substring(0, 1) != "/")
    directory = "/" + directory;
  FtpWebRequest request = GetFtpWebRequest(host + directory, WebRequestMethods.Ftp.PrintWorkingDirectory);
  try
  {
    using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
    {
      directoryExists = true;
    }
  }
  catch (WebException)
  {
    directoryExists = false;
  }
  return directoryExists;
}

private FtpWebRequest GetFtpWebRequest(string url, string method)
{
  FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url);
  request.UseBinary = true;
  request.KeepAlive = true;
  request.UsePassive = (mode == Modes.Passive);
  request.Timeout = Timeout.Infinite;
  request.ServicePoint.ConnectionLimit = 6;
  request.ReadWriteTimeout = Timeout.Infinite;
  if (credential == null)
    credential = new NetworkCredential(login, password);
  request.Credentials = credential;
  request.Method = method;
  return request;
}

La méthode DirectoryExists toujours retourner vrai (même le répertoire n'existe pas), mais seulement sur le cadre 4, avant qu'une exception a été levée par GetFtpWebRequest si le répertoire n'existe pas.

Quelqu'un a eu ce problème ?

S'il vous plaît ne me dites pas d'utiliser une autre bibliothèque cause de tous mes programmes dépendent de celui-ci et je ne veux pas mettre à jour tous les ...

Avez-vous essayé de vérifier le contenu de la réponse avant de retourner VRAI;
Avez-vous mise à jour de votre projet .NET 4.0? Si oui, vérifiez que vous utilisez .NET Framework 4.0 plutôt que de la .NET 4.0 Client Profile dans les propriétés du projet. Ce a fixé à environ 75% de tous les problèmes de compatibilité que j'ai pu croiser jusqu'à présent.
Oui je mettre à jour le projet ".NET framework 4". Si j'utilise ".NET framework 3.5" c'est ok. ".NET framework 4", la réponse StatusCode est toujours "PathnameCreated" si le répertoire existe ou pas ...
Après de nombreux tests, il semble qu'avec le framework 4, les PrintWorkingDirectory méthode retourne toujours "/" (si le répertoire existe ou pas). Mon serveur FTP est sur Ubuntu ...

OriginalL'auteur A.Baudouin | 2011-01-31