를 던졌습니다 : 내 응용 프로그램에서 사용되는 역할의 화이트리스트에 대한의 Active Directory RoleProvider은 - Principal.IsMemberOf 내가 사용자의 Active Directory RoleProvider에서 다음과 같은 방법을 만들었습니다 PrincipalOperationException
public override string[] GetRolesForUser(string username)
{
ArrayList results = new ArrayList();
using (var principalContext = new PrincipalContext(
ContextType.Domain, null, domainContainer))
{
var user = UserPrincipal.FindByIdentity(
principalContext, IdentityType.SamAccountName, username);
foreach (string acceptibleGroup in GroupsToInclude)
{
GroupPrincipal adGroup = GroupPrincipal.FindByIdentity(
principalContext, acceptibleGroup);
if (user.IsMemberOf(adGroup))
results.Add(acceptibleGroup);
}
}
return results.ToArray(typeof(string)) as string[];
}
그것은 단지 확인합니다. 문제는 사용자가 역할 중 하나의 구성원이 아닌 경우
if (user.IsMemberOf(adGroup))
라인이 실행될 때, 나는 PrincipalOperationException
를 얻을 수 있다는 것입니다. 사용자가 그룹에 속하지 않는다면 단순히 false를 리턴 할 것이라고 기대한다. 여기서 뭐가 잘못 됐어?
편집 : 나는 결과를 통해 루프 user.GetAuthorizationGroups()
과 시도를 호출하는 경우 으로 옆으로는, 내가 COMException을 얻을 - 지정한 디렉터리 서비스 특성 또는 값이 존재하지 않습니다.
adGroup이 null이거나 비어 있는지 확인 했습니까? –
그래, 특별히 내가 화이트리스트에 속하지 않는 그룹을 추가했다. 코드는 그룹을 올바르게 찾고 adGroup 변수에 할당하지만 IsMemberOf 메소드가 호출되면 불어납니다. – James