【问题标题】:AccountManagement create user return 'object already exists' exceptionAccountManagement 创建用户返回“对象已存在”异常
【发布时间】:2014-03-21 15:59:29
【问题描述】:

我正在尝试在 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(我运行测试的地方)中使用此方法,该方法由另一个应用程序调用,该应用程序启用了 Windows 身份验证模式。也许应用程序正在向 AD 发送该身份验证?

【问题讨论】:

    标签: c# active-directory account-management


    【解决方案1】:

    sAMAccountName 在整个企业中必须是唯一的。您在创建用户时提到了“特定 OU”。您是否有可能在不同的 OU 中拥有具有相同用户名/sAMAccountName 的其他用户?

    【讨论】:

    • 是的。正如您提到的,用户已经存在于另一个 OU 中。我的代码验证用户是否仅存在于特定的 OU 中,而不是整个企业中。谢谢!
    【解决方案2】:

    我遇到了同样的错误,但对上面接受的答案没有多大帮助,因为在我的情况下,问题不是由于 sAMAccountName 而是由于 Name。尝试创建的帐户具有唯一的 sAMAccountName,但该名称已存在,导致此错误。

    The object already exists.
    

    看起来该错误可能针对多个 Active Directory 帐户属性发生

    • sAMAccountName
    • 姓名

    建议:
    与大多数情况一样,最好在创建新条目之前检查是否存在。

    有用的链接:

    我希望这对某人有所帮助。

    干杯,

    【讨论】:

    • 非常有帮助的答案。 Name 属性映射到 LDAP 对象上的 CN(公用名)。 CN 在您创建帐户的 OU 中必须是唯一的,否则您会得到“对象已存在”。
    猜你喜欢
    • 2016-10-02
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 2019-09-10
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多