2012-12-04 38 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); 

總是得到空。 然後,我不得不關閉視覺工作室做其他事情。當我回來時,打開了visual studio,這段代碼剛剛工作。幾天前,該組織出現網絡問題,在此期間我沒有關閉電腦。在網絡恢復正常後,我可以連接到互聯網,我可以將桌面遠程連接到服務器等,這證明活動目錄認證已經完成,但上面的一段代碼未能找到給定名稱的UserPrinical,例如。我自己的。然後我重新啓動電腦,代碼工作正常。我對這件事感到很困惑。有沒有人能夠爲此提供一個很好的解釋?

+0

此故障仍在發生嗎?如果你現在在哪裏嘗試,你會得到一個錯誤? – Derek

+0

@Derek不,這個錯誤沒有再發生,但是,網絡也沒有問題。這個錯誤很少發生,沒有明顯的原因。沒有錯誤信息。結果很簡單,我得到一個空obj。 – user1866880

回答

0

UserPrincipal在跨域方案中有一些已知的錯誤。再次發生時,請查看是否可以解析機器上的組。當羣組成員無法解析SID時,我也遇到了問題。