为什么我在这里得到“对象引用未设置为对象的实例”
本文关键字:设置 对象 实例 对象引用 在这里 为什么 | 更新日期: 2023-09-27 18:17:20
以下是我的代码:
DirectorySearcher search = new DirectorySearcher( directory );
search.Filter = "(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2)(|(sn=*)))";
search.PropertiesToLoad.Add( "GivenName" );
search.PropertiesToLoad.Add( "OfficePhone" );
search.PropertiesToLoad.Add( "EmployeeNumber" );
SearchResultCollection results = search.FindAll();
int thisCount = results.Count;
string filePath = "C:''test.csv";
string contents = string.Empty;
int counter = 0;
foreach( SearchResult result in results ) {
DirectoryEntry userEntry = result.GetDirectoryEntry();
string givenName = userEntry.Properties[ "userPrincipalName" ].Value.ToString();
string employeeNumber = userEntry.Properties[ "EmployeeNumber" ].Value.ToString();
string phoneNumber = userEntry.Properties[ "OfficePhone" ].Value.ToString();
counter = counter + 1;
}
System.IO.File.WriteAllText( filePath, contents );
我似乎无法解决的问题是,当我开始循环访问"results"对象时,代码在分配givenName
后会爆炸。 我得到的错误是:
对象引用未设置为对象的实例。
我试图弄清楚如何正确分配它,但我总是遇到它。 任何建议将不胜感激。 我很确定这与我没有正确理解DirectorySearcher/DirectoryEntry有关 - 但我可能是错的。 :-)
基于此语句:
分配给定名称后代码爆炸...
这行代码:
userEntry.Properties[ "EmployeeNumber" ]
正在爆炸并让您知道没有名为EmployeeNumber
的属性或EmployeeNumber
的Value
是null
.我将押注第二个,因此将该行更改为:
userEntry.Properties[ "EmployeeNumber" ] as string;
并且您的employeeNumber
字段将在null
时设置为null
,但它不会引发异常。
userEntry.Properties[ "EmployeeNumber" ].Value as string;
工作