DirectoryEntry de = new DirectoryEntry("LDAP://" + DomainName,userName,passWord);
DirectorySearcher ds = new DirectorySearcher();
ds.SearchRoot = de;
ds.Filter = ("(objectClass=user)");
SearchResults results = ds.FindAll();
foreach (SearchResult result in results)
{
string name = result.GetDirectoryEntry().Name.ToString();
Page.Response.Write(name);
}
DirectorySearcher ds = new DirectorySearcher();
ds.SearchRoot = de;
ds.Filter = ("(objectClass=user)");
SearchResults results = ds.FindAll();
foreach (SearchResult result in results)
{
string name = result.GetDirectoryEntry().Name.ToString();
Page.Response.Write(name);
}
但是在執行string name = result.GetDirectoryEntry().Name.ToString();
時報錯:System.Runtime.InteropServices.COMException: 該服務器不可操作。
問題可能出在沒有足夠的權限調用System.DirectoryServices.
DirectorySearcher類是運行在它的SearchRoot:de的憑證下,但是result.GetDirectoryEntry(),Name不是,它是通過使用調用進程的安全上下文調用的result.GetDirectoryEntry().
解決辦法
DirectoryEntry dirEntry = new DirectoryEntry( result.Path, searchRoot.Username, searchRoot.Password, searchRoot.AuthenticationType ) ;