【发布时间】:2023-06-05 10:39:01
【问题描述】:
我有一些奇怪的错误。
DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://11.111.111.11", "user", "1");
DirectorySearcher searcher = new DirectorySearcher(directoryEntry)
{
PageSize = int.MaxValue,
Filter = "(&(objectClass=user)(sAMAccountName=" + txt + "*))"
};
SearchResultCollection resultCollection = searcher.FindAll();
foreach (SearchResult result in resultCollection)
{
if (result != null)
{
users.Add(new ObjectTest(
result.GetDirectoryEntry().Properties["samaccountname"].Value as string,
result.GetDirectoryEntry().Properties["givenName"].Value as string,
result.GetDirectoryEntry().Properties["sn"].Value as string,
result.GetDirectoryEntry().Properties["mail"].Value as string));
}
}
directoryEntry.Close();
当我搜索一些用户时,我会收集它们,然后在 foreach 中使用它们。 例如:我输入 user 并获取 5 个用户的集合,然后填充我的数组。
但有时我会收集到这里给我错误的用户:
例如,我输入 test 并且我知道我有用户“test”并且我看到我的集合具有正确的计数,但是在 result.GetDirectoryEntry() 之后我得到异常对象引用未设置为对象的实例。
我在网站上找不到类似的东西。
注意: 集合具有正常的对象计数,并且 SearchResult 不为 null 它具有正常的路径! 谢谢!
【问题讨论】:
-
注意:Collection 有正常的对象数,SearchResult 不为 null 它有正常的 Path!
-
你能检查一下“result.GetDirectoryEntry()”是否也不为空吗?关于“Properties[]”的同样问题。
-
那么我是否正确理解是
.Value引发了异常? -
我猜 也许
GetDirectoryEntry本身正在从自己的代码中抛出NullReferenceException,但这似乎不太可能。
标签: c# .net active-directory directoryservices