2016-04-15 48 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: - 不客氣! –

相關問題