2016-04-15 28 views
1

有从下面的字符串检索例如CN的“正确”的方式:如何提取项目从LDAP路径字符串

"LDAP://CN=Firstname Surname,OU=Domain Administrators,DC=DOMAIN1,DC=co,DC=uk"

这是我从一个DirectorySearcher

目前检索我这样做:

var name = result.Path.Split('=')[1].Split(',')[0];

但这并不感觉这样做的最好方法 - 是否有人知道任何替代方案?

回答

2

你可以看看这篇文章:An RFC 2253 Compliant Distinguished Name Parser

主要有三个班在此代码:

  • DN,它代表一个完整的识别名称
  • RDN,它代表一个相对专有名称
  • RDNComponent,它表示多值RDN的各个组件

    DN myDN = new DN(@"CN=Pete Everett\, esq.,OU=People,DC=example,DC=com");

打印出DN对象,可以使用它的ToString()方法,如你所期望 。

Console.WriteLine(myDN.ToString()); 
// prints out: 
// CN=Pete Everett\, esq.,OU=People,DC=example,DC=com 

但是,如果你想在格式化更多的控制,你可以指定 类的字符逃跑。

Console.WriteLine(myDN.ToString(EscapeChars.None)); 
// prints out: 
// CN=Pete Everett, esq.,OU=People,DC=example,DC=com 
// (Note that this is an incorrect DN format, and will not parse correctly.) 

要获得一个给定的DN对象的父对象,你可以使用它的父 财产。

DN myParentDN = myDN.Parent; 
Console.WriteLine(myParentDN.ToString()); 
// prints out: 
// OU=People,DC=example,DC=com 
+1

感谢您的链接!这似乎很有用。对于我的目的(一个简单的Web服务只有几个AD查询)添加所有这些类可能有点矫枉过正,但绝对看起来值得一看更通用 – Bassie

+0

@Bassie: - 不客气! –

相关问题