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 ) ;