2015-03-05 14 views
5
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, Domain, UserName, Password)) 
      { 
       UserPrincipal U = new UserPrincipal(ctx); 
       U.GivenName = strFirstName; 
       U.Surname = strLastName; 
       U.EmailAddress = strEmail; 

       PrincipalSearcher srch = new PrincipalSearcher(U); 

       foreach (var principal in srch.FindAll()) 
       { 
        var p = (UserPrincipal)principal; 
        if (!User.Any(x => x.Email == p.EmailAddress)) 
        { 
         MyUserDataset.UserRow User = User.NewUserRow(); 
         User.FirstName = p.GivenName; 
         User.LastName = p.Surname; 
         User.UserName = p.SamAccountName; 
         User.Email = p.EmailAddress; 
         User.AddUserRow(User); 
        } 
       } 
       User.AcceptChanges(); 
      } 

Sto utilizzando la classe PrincipalContext sopra per stabilire una connessione alla directory di destinazione e specificare le credenziali per l'esecuzione di operazioni sulla directory.Come impostare il timeout della connessione quando si stabilisce il contesto - PrincipalContext

Qualcuno sa come posso specificare il timeout della connessione nel Costruttore PrincipalContext? Sono in esecuzione nei problemi di timeout della connessione & Mi chiedevo se posso controllare dopo quanto tempo la connessione può scadere.

risposta

1

Bene, immagino che la risposta non sia purtroppo. Ho scavato nel codice sorgente di PrincipalContext, utilizzato DirectoryEntry che utilizzava il metodo nativo non sicuro System.DirectoryServices.Interop.UnsafeNativeMethods.ADsOpenObject per aprire la connessione LDAP.

Come da questo blog: http://blogs.msdn.com/b/dsadsi/archive/2012/06/06/how-to-specify-timeout-for-ldap-bind-in-net.aspx, non è possibile configurare il timeout su ADsOpenObject. Tuttavia, ha anche detto che se si utilizza direttamente LdapConnection, allora è possibile impostare il timeout. In tal caso, potresti non essere in grado di utilizzare PrincipalContext.