2015-03-05 12 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(); 
      } 

Hedef dizini ile bağlantı kurmak ve dizine karşı işlem yapmak için kimlik bilgilerini belirtmek için yukarıdaki PrincipalContext sınıfını kullanıyorum.Bağlam oluşturulurken bağlantı zaman aşımı nasıl ayarlanır - PrincipalContext

Herhangi biri, PrincipalContext Constructor'da bağlantı zamanını nasıl belirleyebileceğimi biliyor mu ?, bağlantı zaman aşımına uğradı sorunları yaşıyorum & bağlantının ne kadar süre dolduğunu kontrol edip edemeyeceğimi merak ediyordum.

cevap

1

Evet, sanırım cevap maalesef değil. PrincipalContext'in kaynak kodunu kazdım, LDAP bağlantısını açmak için güvenli olmayan yerel yöntem System.DirectoryServices.Interop.UnsafeNativeMethods.ADsOpenObject kullanılan DirectoryEntry kullanılır.

Bu bloga göre: http://blogs.msdn.com/b/dsadsi/archive/2012/06/06/how-to-specify-timeout-for-ldap-bind-in-net.aspx, ADsOpenObject öğesinde zaman aşımı yapılandırmanın bir yolu yoktur. Ancak, LdapConnection doğrudan kullanılıyorsa, zaman aşımını ayarlamak mümkündür. Bu durumda, PrincipalContext kullanıcısını kullanamayabilirsiniz.