System.DirectoryServices.Protocols.dll是.NET2.0新增加的一個針對目錄服務訪問協議處理的組件,其下只有一個System.DirectoryServices.Protocols命名空間。在該命名空間下,主要有LDAP、DSML兩種國際標准協議的一系列實現類。通過這些類,完全可以很方便地實現對目錄的操作管理,這個實現步驟就有點類似你利用ADO.NET操作數據庫一樣方便。
在System.DirectoryServices.Protocols命名空間裡,主要有這樣幾個類:LdapConnection(LDAP協議方式的目錄連接類,負責創建LDAP連接並綁定LDAP服務器)、DsmlSoapHttpConnection(DSML協議方式的目錄連接類、負責創建DSML連接並綁定DSML服務器)、AddRequest/AddResponse、ModifyRequest/ModifyResponse、ModifyDNRequest/ModifyDNResponse、CompareRequest/CompareResponse、SearchRequest/SearchResponse、DeleteRequest/DeleteResponse、DsmlRequestDocument/DsmlResponseDocument。這些類在實際編程應用中的關系如下圖:
LdapConnection的使用:
NetworkCredential credential = new NetworkCredential("Administrator", "password");
LdapConnection ldapConnection = new LdapConnection("192.168.0.6");
ldapConnection.Credential = credential;
ldapConnection.Bind();
string targetDN = "DC=mydomain,DC=local";
// 增加一個名為MyOU的組織單元
string ou = "OU=MyOU," + targetDN;
string objectClass = "organizationalUnit";
AddRequest addRequest = new AddRequest(ou, objectClass);
ldapConnection.SendRequest(addRequest);
執行完SendRequest()後,如果沒有出現異常,那麼MyOU已經成功增加了。當然,如果你還需要進一步對SendRequest()操作後的應答信息進行處理的話,也可以類似下面這樣寫,其中將在屏幕上輸出“Success“的結果碼:
AddResponse addResponse = (AddResponse)ldapConnection.SendRequest(addRequest);