首页 > 解决方案 > 为什么我可以使用“new DirectoryEntry(guid)”而不是 Principle.FindByIdentity 找到 OU?

问题描述

我正在尝试使用DirectoryServices.AccountManagement.NET Core 2.1 查找我们商店位置的用户帐户。

如果我只是DirectoryEntry使用 OU 的 guid 新建一个,它可以将条目拉回没有问题。但是一旦我尝试使用AccountManagement主体,它总是为商店的用户帐户返回 null。

每个商店位置也有一个通讯组,我可以使用 找到那些Principal.FindByIdentity,而不是商店的实际用户帐户。

using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, _domainName, _username, _password)) 
{
    // returns null
    var testOU = Principal.FindByIdentity(pc, IdentityType.Guid, store.ActiveDirectoryOU.ToString());

    // returns proper DirectoryEntry for store's User Account
    var testEntry = new DirectoryEntry("LDAP://<GUID=" + store.ActiveDirectoryOU + ">");

    // returns proper Principal for store's distribution group
    var testGroup = Principal.FindByIdentity(pc, store.ActiveDirectoryGroup.ToString());
}

是否有某种设置可以防止某些用户帐户被看到DirectoryServices.AccountManagement?还是我犯了一些新手错误?

标签: c#asp.net-coreactive-directory

解决方案


您正在使用 Principal.FindByIdentity 而不是 UserPrincipal.FindByIdentity 来获取特定用户。这可能是问题吗?

请参阅此示例

另请参阅 >


推荐阅读