Active Directory (AD DS) 具有“只读域控制器”(RODC) 的概念。可能为了向后兼容,默认是忽略只读域控制器:您必须明确指定您允许连接到只读域控制器。
在我们的 C# 代码中,我们在两个地方看到了这一点。一种是在创建新的System.DirectoryServices.DirectoryEntry时:通过设置System.DirectoryServices.AuthenticationTypes.ReadonlyServer标志可以轻松解决问题,该标志允许使用 RODC。
我的问题是如何使用System.DirectoryServices.AccountManagement命名空间中的类为以下代码实现相同的功能:
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))
using (UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(
ctx,
IdentityType.SamAccountName,
...))
{
// ...
}
因为我们观察到此代码忽略了任何只读域控制器。
(请注意,上述问题与MSDN“Visual C# General”论坛上题为“通过 System.DirectoryServices.AccountManagement 从 C# 应用程序连接到只读域控制器 (RODC) 的问题”的主题中发布的问题完全相同。)