因此,在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)";
进行搜索,我可以得到结果,因为它与第一个封闭式括号后的所有内容相匹配....
答案 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页),了解有关哪些字符以及如何转义它们的更多详细信息。