2017-07-18 26 views
1

比方说,我有这样的LDAP路径,我想用System.DirectoryServices.DirectoryEntry搜索对象在AD:如何区分DirectoryEntry无效路径或无法连接到.NET中的LDAP?

var path = "LDAP://test.com/CN=bob,OU=Users,DC=test,DC=com" 

这条道路是从公元1分钟前检索。如果该对象第二次删除或与Active Directory连接中断,该怎么办? 在我的应用程序中,我存储了此路径,并且想要更改该对象的某个属性。所以,我找回路径并做任何我想要的。在这两种情况下,删除对象或没有连接,我得到相同的异常

"System.Runtime.InteropServices.COMException"

我想抛出一个异常说明问题,我如何区分这两种情况? 我想这样做,因为如果是连接问题,我想在特定的时间后再试一次。但是,如果该对象被删除,我希望我的应用程序用户知道这一点。

DirectoryEntry构造函数不做任何类型的验证。另外,DirectoryEntry.Exsist(path)返回false,但不提供附加信息。 有何建议?

回答

0

有什么错捕另一个异常,然后抛出另一个问题:

try { 
    my_dangerous_call(); 
} catch(COMException e) { 
    throw new MyCustomException(); 
} 
+0

我理解,但我怎么知道什么是交易在这里。对象不再存在,或者连接到AD时发生错误? –

+0

你是什么意思删除对象?在它被设置为“空”? – Ares

+0

不,我希望它返回null。在这种情况下,此路径引用Active Directory中的用户Bob。 LDAP://test.com/CN=bob,OU=Users,DC=test,DC=com .... 删除的对象表示在Active Directory中不再存在! 我有道理吗? –