Почему я получаю "Ссылка на объект не установлена на экземпляр объекта" здесь?
Вот мой код:
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 );
Проблема, которую я, кажется, не могу обойти, состоит в том, что когда я начинаю циклически проходить через объект "результатов", код взрывается после givenName
был назначен. Я получаю ошибку:
В экземпляре объекта не задана ссылка на объект.
Я пытался выяснить, как правильно назначить это, но продолжаю сталкиваться с этим. Любые предложения будут ценны. Я почти уверен, что это связано со мной, не понимающим правильно DirectorySearcher/DirectoryEntry - но я могу ошибаться.:-)
2 ответа
Основываясь на этом утверждении:
код взрывается после того, как было назначено данное имя...
эта строка кода:
userEntry.Properties[ "EmployeeNumber" ]
взрывается и дает вам знать, что нет свойства с именем EmployeeNumber
или что Value
из EmployeeNumber
является null
, Я собираюсь сделать ставку на второе, и поэтому измените эту строку на это:
userEntry.Properties[ "EmployeeNumber" ] as string;
и ваш employeeNumber
поле будет установлено в null
когда он является null
но это не бросит исключение.
userEntry.Properties[ "EmployeeNumber" ].Value as string;
работал