Error con el método UserPrincipal.GetAuthorizationGroups ()

Tengo un problema al usar el método GetAuthorizationGroups de la clase UserPrincipal en una aplicación web.

Utilizando el siguiente código, recibo "Al intentar recuperar los grupos de autorización, se produjo un error (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();

Creo que este código funciona hasta cierto punto.

Cuando veo el objeto de contexto, puedo ver que el servidor y el nombre de usuario / contraseña se han resuelto correctamente en el objetoCuando veo el objeto p, puedo ver que los detalles de AD se han rellenado como el número de teléfono, etc.

Aquí está el seguimiento de la pila del error.

[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

Al eliminar los detalles de nombre de usuario y contraseña del constructor PrincipalContext y cambiar el grupo de aplicaciones (en iis7) para que se ejecute como el mismo usuario ([email protected]), funciona el siguiente código.

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

Necesito que el código en el primer ejemplo funcione: no quiero ejecutar el grupo de aplicaciones como usuario de dominio solo para que este código funcione.

Respuestas a la pregunta(3)

Su respuesta a la pregunta