Używam z tego kodu:
List<GroupPrincipal> result = new List<GroupPrincipal>();
// establish domain context
PrincipalContext MyDomain = new PrincipalContext(ContextType.Domain);
// find your user
UserPrincipal user = UserPrincipal.FindByIdentity(MyDomain , username);
// if found - grab its groups
if(user != null)
{
PrincipalSearchResult<Principal> groups = user.GetAuthorizationGroups();
// iterate over all groups
foreach(Principal p in groups)
{
// make sure to add only group principals
if(p is GroupPrincipal)
{
result.Add(p);
}
}
}
ale w tej linii ( user.GetAuthorizationGroups()
) Mam wyjątek
Ten serwer nie działa
Odpowiedzi:
1 dla odpowiedzi № 1W środowisku internetowym:
System.Web.HttpContext.Current.Request.LogonUserIdentity.Groups
lub w Twoim kontekście:
user.GetGroups()
1 dla odpowiedzi nr 2
Z tego, co pamiętam, wyjątek może wynikać z faktu, że nazwy domeny nie można rozwiązać za pomocą żadnego dostępnego DNS. Upewnij się, że tak jest, a wyjątek zniknie.
1 dla odpowiedzi nr 3
Sprawdź to, jeśli może ci to pomóc http://support.microsoft.com/kb/842789
Aktualizacja :
Otwórz program Visual Studio jako Administrator a następnie otwórz rozwiązanie. następnie spróbuj ponownie. Uważam, że problem wynika z uprawnień do aplikacji.
0 dla odpowiedzi nr 4
Mam dokładnie ten sam problem, gdy uruchamiam jeden z moich programów na komputerze (na komputerze deweloperskim) który nie należy do domeny, o którą pytam. Mam na myśli to, że mam kontekst, otrzymałem informacje o UserPrincipal i mam ten sam błąd, gdy wywołuję GetGroups (). Ten sam program uruchomiony na serwerze działa doskonale.
Próbowałem skonfigurować komputer programistyczny bezpośrednio z domeną DNS jako pierwszym DNS, ale było tak samo.
Próbowałem mocno skonfigurować adresy domeny i DC w pliku hosts, ale było tak samo.
Więc zdalnie debuguję mój program z maszyny wirtualnej, która była w domenie.
0 dla odpowiedzi № 5
Ponownie instaluję usługę Active Directory i problem został rozwiązany ...
0 dla odpowiedzi № 6
Jedna z grup, które próbujesz złapać, zawarta w GetGroups jest grupą administracyjną i wymaga specjalnego pozwolenia. Spróbuj ustawić użytkownika / hasło w swoim kontekście i użyj getGroups (kontekst)