0

所以在 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();

因此,由于额外的右括号,搜索变得无效并引发异常。

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

我尝试在 Open Bracket 和 Close Bracket 的每个前面添加转义字符 \,虽然搜索是有效的,但它没有返回搜索结果。

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

4

2 回答 2

2

引用MSDN 文档

特殊字符。如果以下任何特殊字符必须以文字形式出现在搜索过滤器中,则必须将它们替换为列出的转义序列。

ASCII 字符转义序列替代:

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

在这里,您有执行转义的代码:https ://stackoverflow.com/a/694915/986161

于 2013-08-06T17:54:42.170 回答
0

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

于 2013-08-07T03:35:47.423 回答