Error mit der UserPrincipal.GetAuthorizationGroups () -Methode

Ich habe ein Problem mit der GetAuthorizationGroups-Methode der UserPrincipal-Klasse in einer Webanwendung.

Mit dem folgenden Code erhalte ich die Meldung "Beim Versuch, die Berechtigungsgruppen abzurufen, ist ein Fehler (5) aufgetreten"

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();

Ich glaube, dieser Code funktioniert zu einem gewissen Grad.

Wenn ich das Kontextobjekt ansehe, kann ich sehen, dass der Server und der Benutzername / das Passwort im Objekt korrekt aufgelöst wurden.Wenn ich das p-Objekt ansehe, sehe ich, dass AD-Details wie Telefonnummer usw. ausgefüllt wurden.

Hier ist der Stack-Trace des Fehlers.

[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

Durch Entfernen der Benutzer- und Kennwortdetails aus dem PrincipalContext-Konstruktor und Ändern des Anwendungspools (in iis7), sodass er unter demselben Benutzer ([email protected]) ausgeführt wird, funktioniert der folgende Code.

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

Ich muss den Code im ersten Beispiel zum Laufen bringen - Ich möchte den Anwendungspool nicht als Domänenbenutzer ausführen, nur um diesen Code zum Laufen zu bringen.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage