2015-12-02 122 views
1

我能夠以該用戶的身份運行以下代碼,在所有其他情況下都沒有問題。出於某種原因,在這種特殊情況下,在將用戶添加到組中並檢查用戶是否已添加之前,它給了我這個例外:AD GroupPrincipal:調用目標引發異常

調用的目標引發了異常。

該錯誤發生在調用行。

這不應該發生。發送的目錄對象是正確的,組存在,我可以從它刪除成員就好了,我甚至可以添加成員到它而不檢查作爲測試。在我的應用程序的其他領域,這些代碼沒有錯誤地使用。我在許多其他應用程序中使用此代碼,並已使用它多年。這裏發生了什麼?我忘了什麼?

private bool userIsMember(string strUser, DirectoryEntry strGroup) 
{ 
    bool result = true; 
    try 
    { 
     object[] args = { strUser }; 
     object IsMember = strGroup.Invoke("IsMember", args); 

     if ((bool)IsMember == true) 
     { 
      result = true; 
     } 
     else 
     { 
      result = false; 
     } 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show("Problem with user: " + strUser + "\r\n\r\n" + ex.Message + "\r\n\r\n" + ex.ToString()); 
    } 

    return result; 
} 

回答

1

如果它工作在其他應用程序,然後我的猜測,爲什麼它不工作在這裏的東西在運行該代碼的用戶(換句話說,安全)的憑據不同。

但是無論如何,如果可以的話,我會切換到使用System.DirectoryServices.AccountManagement中的類。他們更C#友好:

PrincipalContext principalContext = new PrincipalContext(ContextType.Domain); 
GroupPrincipal group = GroupPrincipal.FindByIdentity(principalContext, "GName"); 

的GroupPrincipal有您可以通過搜索一個成員屬性。

+0

上面的方法很有幫助,但在使用它來檢查用戶是否爲組的成員時,會引發異常情況。我假設你的意思是檢查布爾group.members.contains(userprincipal用戶) –

相關問題