Erro no método UserPrincipal.GetAuthorizationGroups ()

Estou tendo um problema ao usar o método GetAuthorizationGroups da classe UserPrincipal em um aplicativo Web.

Usando o código a seguir, estou recebendo "Ao tentar recuperar os grupos de autorização, ocorreu um erro (5)"

PrincipalContext context = new PrincipalContext(ContextType.Domain, null, "DC=MyCompany,DC=COM", "username", "password");
UserPrincipal p = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "joe.blogs");
var groups = p.GetAuthorizationGroups();

Eu acredito que esse código funciona até certo ponto.

Quando visualizo o objeto de contexto, vejo que o servidor e o nome de usuário / senha foram resolvidos corretamente no objetoQuando visualizo o objeto p, vejo que os detalhes do AD foram preenchidos como telefone, etc.

Aqui está o rastreamento de pilha do erro.

[PrincipalOperationException: While trying to retrieve the authorization groups, an error (5) occurred.]
   System.DirectoryServices.AccountManagement.AuthZSet..ctor(Byte[] userSid, NetCred credentials, ContextOptions contextOptions, String flatUserAuthority, StoreCtx userStoreCtx, Object userCtxBase) +317279
   System.DirectoryServices.AccountManagement.ADStoreCtx.GetGroupsMemberOfAZ(Principal p) +441
   System.DirectoryServices.AccountManagement.UserPrincipal.GetAuthorizationGroupsHelper() +78
   System.DirectoryServices.AccountManagement.UserPrincipal.GetAuthorizationGroups() +11

Removendo os detalhes de nome de usuário e senha do construtor PrincipalContext e alterando o pool de aplicativos (no iis7) para executar como o mesmo usuário ([email protected]) - o código a seguir funciona.

PrincipalContext context = new PrincipalContext(ContextType.Domain, null, "DC=MyCompany,DC=COM");
UserPrincipal p = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "joe.blogs");
var groups = p.GetAuthorizationGroups();

Eu preciso que o código no primeiro exemplo funcione - não quero executar o pool de aplicativos como um usuário de domínio apenas para que esse código funcione.

questionAnswers(3)

yourAnswerToTheQuestion