Я видел некоторый код для работы с AD в этом вопросе stackoverflow
Я запутался по поводу оператора using. Я подумал, что он просто использовался для вещей, которые, как вы беспокоитесь, могли вызвать утечку памяти, например WebClient или что-то подобное ...
В любом случае:
using (var context = new PrincipalContext( ContextType.Domain ))
{
using (var user = UserPrincipal.FindByIdentity( context, "username" ))
{
var groups = user.GetAuthorizationGroups();
...
}
}
когда я дойду до строки var groups = user.GetAuthorizationGroups ( )
- пользователь имеет значение NULL, поэтому строка не выполняется с помощью NullReference. Когда я наводю указатель мыши на отладку, он показывает null, затем показывает статические члены и все значения.
Если я уберу строку из оператора using и оставлю только var user = UserPrincipal.FindByIdentity (context, "username")
user заполняется по мере необходимости.
Так что происходит ???
Редактировать: Я набросился и отправил поддельное имя пользователя. Как ни странно, когда я проверяю переменные во время отладки, когда вы ожидаете, что пользователь будет полностью нулевым, если я отправлю фиктивный идентификатор пользователя, но он показал под пользователем: null, статические члены, и были значения для того, что я в настоящее время вошел в систему как - поэтому я подумал, что это потенциально связано с оператором using. Ура!