How to know if my DirectoryEntry is really connected to my LDAP directory?

我怕爱的太早我们不能终老 提交于 2019-11-29 13:34:34

Just "newing" up a DirectoryEntry does NOT create a connection to the LDAP store.

Only once you start using its properties, or when you access the .NativeObject property explicitly, you'll actually get a connection to the LDAP store.

In order to make sure you're connected, just read out the (DirectoryEntry).NativeObject in a try...catch clause - if it bombs out, you have a problem, otherwise your connection is now up and active.

Unfortunately, to my knowledge, there is no property or method you can call to figure out whether or not you've successfully connected to LDAP using DirectoryEntry.

Marc

You can check DirectoryEntry.Properties.Count. If it's > 0, it's a valid object. .Properties is never null - you'll be able to read the count even if you're not connected up to a valid DirectoryEntry, and a valid DE will always have at least one property.

No try/catch or exceptions necessary.

Ok so marc_s's solution was approximately what i was doing (except i was looking for SchemaEntry and not NativeObject). But the timeout delay is much too long (the query is run to fill autocompletion values for a form). I think I actually prefer to pretend the connection is open and let the query run. That way, i can set my own, smaller, timeout delay.

Seeni Abirami

You can check DirectoryEntry.Properties.Count. If it's > 0,for a valid object. But still let say your LDAP server is down. you can't identify it with any of its properties.Instead you can catch it using the try catch block

try         
{    
     entry = new DirectoryEntry("priorityLDAPServer", sUserName, sPassword, AuthenticationTypes.None);      
   if(entry.Properties.Count > 0) 
   {               
        object o = entry.NativeObject;        
     `   next need to check user record in application database`      
   }
 }        
    catch (System.Runtime.InteropServices.COMException comex)       
{    

 //throws you the error if LDAP   server is down or wrong "Server is invalid "          
 //  you can further do a nested try catch within this block if you to try a     optional LDAP server.*
}       

Hope this helps you

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!