2011-10-11 123 views
2

我從這個代碼中使用:如何獲取Active Directory中的用戶組?

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); 
     } 
     } 
    } 

,但在這條線(user.GetAuthorizationGroups())我得到了一個異常

This server is not operational

+0

我想在wpf應用程序中使用此鱈魚 –

+1

可以嘗試使用'user.GetGroups()'而不是'.GetAuthorizationGroups()' - 做到這一點工作?? –

+0

user.GetGroups()也有這個異常 –

回答

0

我安裝我再次Active Directory和我的問題解決了......

1

在Web環境:

System.Web.HttpContext.Current.Request.LogonUserIdentity.Groups 

或在你的背景:

user.GetGroups() 

MSDN

+0

user.GetGroups()like user.GetAuthorizationGroups()得到這個eror:這個服務器不是Operatinal –

+0

你的電腦在一個域中?如果是這樣,你有連接到域服務器? – Peter

+0

ya ... UserPrincipal user = UserPrincipal.FindByIdentity(MyDomain,username); 我的用戶對象不是空的,並hase我的用戶iformation; –

1

從我記得,除了可以通過一個事實,即域名不能與任何可用的DNS來解析引起的。確保它是和例外消失。

1

檢查這一點,如果它可以幫助你 http://support.microsoft.com/kb/842789

更新:

打開Visual Studio作爲管理員,然後打開您的解決方案。然後再試一次。我相信你的問題是因爲應用程序的許可。

+0

你的建議鏈接是爲此錯誤:登錄失敗:未知的用戶名或不好。但我有這個錯誤:「此服務器不可操作」 –

+0

檢查您的服務器防火牆 –

0

當我從計算機(開發計算機)運行我的程序之一,它不屬於到我查詢的域時,我遇到了完全相同的麻煩。我的意思是我獲得了上下文,我獲得了UserPrincipal信息,並且在調用GetGroups()時出現同樣的錯誤。在服務器上運行的相同程序本身完美運行。

我嘗試設法讓我的開發計算機直接配置域名DNS作爲第一個DNS,但它是一樣的。

我嘗試在主機文件中硬配置域和DC地址,但它是一樣的。

所以我遠程調試我的程序從一個虛擬機在域中。

0

一個你試圖抓住列入GetGroups組是管理員組和需要特殊許可。嘗試在你的上下文中設置用戶名和密碼,並使用getGroups(上下文)

相關問題