Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C# .net] Timeout lors de la connexion à Active Directory

Sujet résolu
    10 octobre 2011 à 11:43:14

    Bonjour,

    Je créé une appli web où les utilisateurs se connectent avec leurs identifiants de l'Active Directory. Lorsqu'ils se connectent, j'ai ce message d'erreur :

    Citation

    System.Runtime.InteropServices.COMException (0x800705B4): Cette opération s'est terminée car le délai d'attente a expiré. at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail) at System.DirectoryServices.DirectoryEntry.Bind() at System.DirectoryServices.DirectoryEntry.get_AdsObject() at System.DirectoryServices.DirectorySearcher.FindAll(Boolean findMoreThanOne) at System.DirectoryServices.DirectorySearcher.FindOne() at DEP.Connect2.Authentication(String login, String password, Boolean ssl) in D:\Service\Profiles\nstophe\Desktop\DEP\DEP\Connect2.aspx.cs:line 107



    En fait, il plante à la ligne 107, c'est à dire quand je fais : results = search.FindOne(); (où "search" est de type DirectorySearcher). L'appli attends 30 secondes le temps de faire sa recherche puis rentre dans le catch et affiche le message d'erreur.

    Voici le code :
    private DirectoryEntry getDirectoryEntry(string login, string password, bool ssl, bool anonymous)
    {
        string ServeurAcd = "LDAP://" + ConfigurationSettings.AppSettings["LdapServer"].ToString();
    
        return new DirectoryEntry(ServeurAcd + (ssl ? ":636" : "") + "/o=acd/ou=People", login, password, anonymous == true ? AuthenticationTypes.Anonymous : AuthenticationTypes.ServerBind);
    }
    
    public bool Authentication(string login, string password, bool ssl)
    {
        string loginAdminACD = login;
        string pwdAdminACD = password;
    
        bool result = false;
        SearchResult results;
        DirectoryEntry entryForLogin;
        string strFiltreRecherche = "loginname=" + login;
        string strFieldSearched = "uid";
        try
        {
            entryForLogin = getDirectoryEntry(loginAdminACD, pwdAdminACD, ssl, false);
            DirectorySearcher search = new DirectorySearcher(entryForLogin);
            search.Filter = strFiltreRecherche;
            search.PropertiesToLoad.Add(strFieldSearched);
            results = search.FindOne();
            if (results != null)
            {
                result = true;
            }
        }
        catch (Exception ex)
        {
            info.Text = ex.ToString();
        }
    
        return result;
    }// Authentification()
    
    • Partager sur Facebook
    • Partager sur Twitter
      10 octobre 2011 à 19:56:25

      Si tu n'éxecutes pas le code en local, le premier truc que je vérifierais est le pare-feu :)
      • Partager sur Facebook
      • Partager sur Twitter
        11 octobre 2011 à 10:53:03

        Le problème venait de l'adresse du serveur LDAP. :p
        • Partager sur Facebook
        • Partager sur Twitter

        [C# .net] Timeout lors de la connexion à Active Directory

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown