0

我需要在Active Directory中創建聯繫人。我有一個擴展UserPrincipal的類。我如何使用它來創建新的聯繫人?下面的代碼拋出PrincipalOperationException「請求的操作不滿足與對象的類關聯的一個或多個約束」。例外。如何通過擴展UserPrincipal類在Active Directory中創建聯繫人?

[DirectoryObjectClass("contact")] 
[DirectoryRdnPrefix("CN")] 
internal class MyContact : UserPrincipal 
{ 

    public MyContact(PrincipalContext context) 
     :base(context) 
    { 
    } 

} 

using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "domain", 
    "OU=Unit1,DC=domain,DC=com", "login", "pass")) 
{ 

    using (MyContact principal = new MyContact(pc)) 
    { 
     principal.Name = "Cnt1"; 
     principal.Save(); 
    } 
} 

我在做什麼錯?

回答

0

聯繫人對象不是安全主體。它沒有SID或SAM帳戶名稱。使用任何主體類來表示聯繫人對象似乎不太合適。

+0

自定義UserPrincipal有DirectoryObjectClass,您可以在其中指定AD類。我能夠創建派生自UserPrincipal的類,搜索,讀取和更新聯繫人以及特定於聯繫人的所有AD屬性。一切都很完美。所以我認爲這應該是可能的。我唯一無法理解的是如何使用UserPrincipal創建新聯繫人。我想有一些屬性特定於聯繫人,可能是缺少的或是額外的,我需要從UserPrincipal以某種方式刪除它。 – 2015-02-11 05:38:15

+0

我認爲它只適用於表示安全主體的類。聯繫人不是安全主體(沒有SID,SAM帳戶名),它也沒有許多用戶支持的屬性(例如userAccountControl)。如果底層的Principal類嘗試訪問相關信息,則可能會導致問題。無論如何,如果你從未碰過任何與安全主管或用戶相關的屬性,可能會起作用。但我高度懷疑這一點。 – baldpate 2015-02-11 07:11:53

相關問題