鉴于以下代码,当我知道校长不存在且实际上没有制作时,为什么我会得到PrincipalExistsException
?
public UserPrincipal Add(
string givenName,
string surname,
string domain) {
UserPrincipal principal = new UserPrincipal(context: base.Context) {
Enabled = true
};
if (!String.IsNullOrEmpty(givenName) && !String.IsNullOrEmpty(surname) && !String.IsNullOrEmpty(domain)) {
this.RenameInternal(principal: principal, givenName: givenName, surname: surname, domain: domain);
principal.Save();
};
return principal;
}
我可以确认RenameInternal()
方法工作正常,因为它被名为Rename()
的方法调用。因此,对象的创建和/或保存方式一定存在问题,但我不知道如何找出错误的位置。这看起来很简单......
通过域控制器(Windows Server 2008 R2)查看我无法在任何地方找到“新”创建主体,因此我假设它没有被创建,并且该异常以某种方式对我说谎。
我很感激任何帮助。提前谢谢。
答案 0 :(得分:0)
我能想到的唯一一件事就是以下
无论您的应用程序运行的是什么ID,都需要对AD进行“写入”访问。几乎任何ID都可以查询AD,但只有明确授予ID的ID才能写入。
答案 1 :(得分:0)
好的,我明白了。 SamAccountName是引发异常的原因(感谢Microsoft提供了有用的错误消息)。无论如何,这是问题,因为它试图将其设置为已存在的名称。我通过在中间的首字母中进行修改来修改它并且它工作正常,或者至少在我得到具有相同的第一个初始,中间名字和姓氏的人之前。