Какой PrincipalContext использует UserPrincipal.GetGroups(), если не указан?
В случае, когда я получаю группы для идентификатора UserPrincipal (в поставщике ролей Active Directory), и я использую функцию UserPrincipal.GetGroups(), которая не требует PrincipalContext в качестве параметра, то, что по умолчанию используется для PrincipalContext? Я спрашиваю, как при устранении неполадок, я вижу, как он подключается к другому серверу AD, который не является подключенным сервером для моего PrincipalContext. Некоторый код в качестве примера:
using ( PrincipalContext context = new PrincipalContext( ContextType.Domain, "domain", null, ContextOptions.Negotiate ) )
{
UserPrincipal identity = UserPrincipal.FindByIdentity( context, IdentityType.SamAccountName, username );
if (identity != null)
{
var groupList = identity.GetGroups();
}
}
Если я выведу context.ConnectedServer
Я получаю действующий активный сервер. Тем не мение, identity.GetGroups()
подключается к другому серверу (в моем случае System.DirectoryServices.ActiveDirectory.ActiveDirectoryServerDownException
потому что он подключается к старому серверу). Если я вместо этого использую identity.GetGroups(context)
, группы возвращаются правильно. Почему вызов GetGroups без PrincipalContext приводит к тому, что по умолчанию он подключается к другому серверу?