搜索包含额外Closed Bracket的LDAP组名称

时间:2013-08-06 17:36:33

标签: c# ldap

因此,在Active Directory中,有一个包含额外关闭括号的组名称:

  

即:我的团体名称(某事))

在我的代码中,以下是我搜索的方式:

string searchCN = "My Group Name (Something))";
dirSearch.Filter = string.Format("(|(&(objectCategory=group)(CN={0}*)))", searchCN);
dirSearch.PropertyNamesOnly = false;
dirSearch.ReferralChasing = ReferralChasingOption.None;
searchcCollection = dirSearch.FindAll();

那么,由于额外的闭括号,搜索变得无效并抛出异常。

有没有办法可以正常搜索?

虽然搜索有效,但我尝试在每个打开括号和关闭括号中添加转义字符\ infront,但它不会返回搜索结果。

注意:如果我使用string searchCN = "My Group Name (Something)";进行搜索,我可以得到结果,因为它与第一个封闭式括号后的所有内容相匹配....

2 个答案:

答案 0 :(得分:2)

引用MSDN docs

  

特殊字符。如果有的话   以下特殊字符必须在搜索过滤器中显示为   文字,必须用列出的转义序列替换。

     

ASCII字符转义序列替换:

     
      
  • * \ 2a
  •   
  • (\ 28
  •   
  • )\ 29
  •   
  • \ \ 5c
  •   
  • NUL \ 00
  •   
  • / \ 2f
  •   

这里有代码来执行转义:https://stackoverflow.com/a/694915/986161

答案 1 :(得分:0)

您的LDAP搜索过滤器应始终符合RFC 4515。请查看RFC页面的第3部分(第3-4页),了解有关哪些字符以及如何转义它们的更多详细信息。