我正在尝试在ActiveDirectory中的特定OU中创建一个新的UserPrincipal,并返回一个带有“对象已存在”消息的异常。 (显然)用户不存在于该OU中,我正在测试它的存在。
我做错了什么?
以下是抛出异常的代码:
public UserPrincipal CreateUser(string username, string pass,
string givenName, string surname) {
PrincipalContext context = this.principalContext;
UserPrincipal user = new UserPrincipal(context);
user.SamAccountName = username;
user.UserPrincipalName = username;
user.GivenName = givenName;
user.Surname = surname;
user.SetPassword(pass);
user.Save();
return user;
}
编辑1:单元测试后,我发现代码没问题。我在lib(我运行测试)中使用此方法,该lib由另一个启用了Windows身份验证模式的应用程序调用。也许该应用程序正在将该身份验证发送给AD?
答案 0 :(得分:3)
sAMAccountName在整个企业中必须是唯一的。你提到了特定的OU'在创建用户时。是否有可能在另一个OU中有另一个用户名/ sAMAccountName相同的用户?
答案 1 :(得分:2)
我遇到了同样的错误,但是从上面接受的答案中并没有太大帮助,因为在我的情况下,问题不是由于sAMAccountName
,而是由于Name
。尝试创建的帐户具有唯一的sAMAccountName,但是名称已经存在,导致此错误。
The object already exists.
看起来错误可能发生在多个Active Directory帐户属性上
推荐:
与大多数情况一样,最好在创建新条目之前检查是否存在。
有用的链接:
我希望这对某人有帮助。
干杯