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