Active Directory-Gruppensuchfunktion schlägt fehl

Hilfe! Ich habe versucht, eine Funktion zu schreiben, mit der die Mitgliedschaft eines Benutzers in einer Active Directory-Gruppe bestätigt wird. Wenn sich das Mitglied zufällig in der Gruppe befindet, wird eine Ausnahme ausgelöst, wenn dies nicht der Fall ist.

Hier ist die Funktion:

private bool IsUserMemberOfGroup(string user, string group)
{
  using (var ctx = new PrincipalContext(ContextType.Domain))
  using (var groupPrincipal = GroupPrincipal.FindByIdentity(ctx, group))
  using (var userPrincipal = UserPrincipal.FindByIdentity(ctx, user))
  {
    if (groupPrincipal == null)
    {
      return false;
    }
    else
    {
      return userPrincipal.IsMemberOf(groupPrincipal);
    }
  }
}

Und hier ist das YSOD:

Serverfehler in '/' Anwendung.Unbekannter Fehler (0x80005000)

Beschreibung:Bei der Ausführung der aktuellen Webanforderung ist eine nicht behandelte Ausnahme aufgetreten. Überprüfen Sie die Stapelablaufverfolgung, um weitere Informationen zu dem Fehler und dessen Ursprung im Code zu erhalten.

Ausnahmedetails:

System.Runtime.InteropServices.COMException: Unbekannter Fehler (0x80005000)

Quellfehler:

<pre> Line 34: else Line 35: { Line 36: return userPrincipal.IsMemberOf(groupPrincipal); Line 37: } Line 38: } </pre>

Ich weiß nicht, ob es verwandt ist, aber wenn ich durch die Funktion gehe, löst groupPrincipal.Members.Count eine Ausnahme vom Typ "System.NullReferenceException" aus, wobei Count.Base eine Ausnahme mit der Meldung "Objektreferenz nicht auf Instanz gesetzt" anzeigt eines Objekts ".

Was zum Teufel ist los? Warum gibt ein Bool namens IsMemberOf nicht einfach false zurück, wenn jemand kein Mitglied ist?

Vielen Dank,

Daniel

Antworten auf die Frage(3)

Ihre Antwort auf die Frage