2012-12-04 4 views
1

Windows 도메인 사용자가 속한 그룹을 쿼리하기 위해이 코드를 프로그램에 포함 시켰습니다. 난 그냥 그것을 구현하고 디버깅했다 C# LDAP 쿼리가 가끔씩 실패합니다.

public void GetGroupNames(string userName, List<string> result) 
    { 
     using (PrincipalContext pc = new PrincipalContext(ContextType.Domain)) 
     { 
      UserPrincipal uPrincipal = UserPrincipal.FindByIdentity(pc, userName); 
      if (uPrincipal != null) 
      { 
       PrincipalSearchResult<Principal> srcList = uPrincipal.GetGroups(); 
       foreach (Principal item in srcList) 
       { 
        result.Add(item.ToString()); 
       } 
      } 
     } 
    } 

UserPrincipal uPrincipal = UserPrincipal.FindByIdentity(pc, userName); 

는 항상 null 얻었다. 그런 다음 다른 작업을 수행하기 위해 Visual Studio를 종료해야했습니다. 내가 돌아 왔을 때 Visual Studio를 열어서,이 코드는 방금 작업했습니다. 며칠 전 조직에 네트워크 문제가 있었고 그 기간 동안 PC를 끄지 않았습니다. 네트워크가 정상 상태로 돌아간 후 인터넷에 연결할 수 있었고 원격 데스크톱을 서버 등에 연결할 수있었습니다. 이는 Active Directory 인증이 정상적으로 완료되었음을 증명했지만 위의 코드는 주어진 이름에 대해 UserPrinical을 찾지 못했습니다. 내 자신의. 그런 다음 PC를 재부팅하면 코드가 정상적으로 작동합니다. 나는이 문제에 관해서는 매우 당혹 스럽다. 아무도 이것에 대한 좋은 설명을 제공 할 수 있습니까 ??

+0

이 오류가 여전히 발생합니까? 지금이 사이트를 사용해 볼 수있는 곳이라면 오류가 발생합니까? – Derek

+0

@Derek 아니요,이 결함은 다시는 발생하지 않았지만, 네트워크는 괜찮습니다. 이 오류는 분명한 이유없이 매우 드물게 발생합니다. 오류 메시지가 없습니다. 결과는 단순히 null obj를 얻은 것입니다. – user1866880

답변

0

UserPrincipal에는 도메인 간 시나리오에서 알려진 몇 가지 버그가 있습니다. 다시 발생하면 컴퓨터에서 그룹을 해결할 수 있는지 살펴보고 확인하십시오. 해결할 수없는 SID의 경우 그룹 구성원이있는 경우에도 문제가 발생했습니다.

관련 문제