如果未指定,UserPrincipal.GetGroups()会使用什么PrincipalContext?

时间:2017-09-06 22:54:14

标签: c# active-directory directoryservices .net-4.6.2

如果我正在获取UserPrincipal标识的组(在Active Directory角色提供程序中),并且我使用不需要PrincipalContext作为参数的UserPrincipal.GetGroups()函数,它默认使用什么对于PrincipalContext?我问在解决问题时,我看到它连接到不是我的PrincipalContext的连接服务器的不同AD服务器。一些代码作为例子:

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),则会正确返回组。为什么在没有PrincipalContext的情况下调用GetGroup会导致它默认连接到不同的服务器?

0 个答案:

没有答案