C# DirectoryServices PrincipalContext可以添加到一级容器,但不能添加到子容器

C# DirectoryServices PrincipalContext可以添加到一级容器,但不能添加到子容器,c#,active-directory,directoryservices,C#,Active Directory,Directoryservices,不知道我在这里错过了什么。我尝试过使用DirectoryEntry和PrincipalContext,但两种方法都有相同的问题。广告的结构像 root (okwu.edu) students AGS Traditional 我可以使用将用户添加到学生容器中 PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, "OKWU.EDU", "OU=Students,D

不知道我在这里错过了什么。我尝试过使用DirectoryEntry和PrincipalContext,但两种方法都有相同的问题。广告的结构像

root (okwu.edu)
    students
        AGS
        Traditional
我可以使用将用户添加到学生容器中

PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, "OKWU.EDU", "OU=Students,DC=okwu,DC=edu", systemAccount, systemAccountPassword);

UserPrincipal user = new UserPrincipal(domainContext, model.SamAccountName, model.Password, true);
但是如果我将dn用于AGS(或传统)


然后,我得到一个错误,该对象在服务器上不存在。我已经找到了第一级容器的材料,但是没有任何东西可以解释我在尝试进入第二级容器时遗漏了什么

当然,因为您没有将您的主要上下文更改为“OU=AGS,OU=Students,DC=okwu,DC=edu”:


我能想到三种不同的可能性

可能性1:

你确定DN真的是
OU=AGS,OU=Students,DC=OKWU,DC=edu

你可以装集装箱。所以,您的DN可能实际上是这样的

CN=AGS,OU=Students,DC=OKWU,DC=edu
获取ADexplorer或ADSIedit。先看看他们的名字

可能性2:

您有多个域控制器。其中一个域控制器已创建,但其他域控制器未创建。这可能是由于复制设置不正确造成的

可能性3:


您的系统帐户没有权限查看
OU=AGS、OU=Students、DC=OKWU、DC=edu
。为了证明这一点,您可以在使用ADSIedit时尝试以SystemAccount登录。

这就是我获取对象不存在错误的时候。我已经进入ADSIEdit并从容器中复制了dn。使用OU=AGS,OU=STudents,DC=OKWU,DC=EDU,我可以从AD读取记录,但尝试创建新条目是在失败时。您真的调用
user.Save()我已从adsiedit复制了dn。我将在DN中附加CN=username并尝试它。另一个可能的原因是您有多个域控制器。一个域控制器获得了ou,但另一个域控制器没有。另一个可能的原因是您的系统帐户没有足够的权限查看您的子ou。使用Adsieditah good point时使用系统帐户登录。我也会试试。这和我以前读过的那个孩子的故事是一样的,但值得一试。你打得离它最近。从一级容器开始尝试启动directoryentry,我可以保存到传统的ok,但不能保存到AGS。深入研究发现,学生拼写错误,我正在对AGS进行测试,所以它找不到容器。我讨厌这种情况发生。
PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, "OKWU.EDU", "OU=AGS,OU=Students,DC=okwu,DC=edu", systemAccount, systemAccountPassword); 
CN=AGS,OU=Students,DC=OKWU,DC=edu