无法在ActiveDirectory中创建PrincipalContext

时间:2015-08-18 03:35:07

标签: c# .net active-directory directoryservices principalcontext

我正在使用.NET Forms应用程序中的代码来尝试创建PrincipalContext对象。

var oPrincipalContext = new PrincipalContext(
                ContextType.Domain, 
                "mydomain.workgroup",
                "CN=users,CN=mydomain,CN=workgroup", 
                ContextOptions.Bind,                    
                "ADAdmin", 
                "ADAdminPassword");

我也尝试了这个,但得到了同样的错误。

var oPrincipalContext = new PrincipalContext(
                ContextType.Domain, 
                "mydomain.workgroup",
                "CN=users,CN=mydomain,CN=workgroup", 
                ContextOptions.Negotiate,                    
                "ADAdmin", 
                "ADAdminPassword");

我还尝试ADAdmin@mydomain.workgroup作为用户ID。

我收到此错误

Message=An operations error occurred.

StackTrace=   at System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInit()
   at System.DirectoryServices.AccountManagement.PrincipalContext.DoDomainInit()
   at System.DirectoryServices.AccountManagement.PrincipalContext.Initialize()
   at System.DirectoryServices.AccountManagement.PrincipalContext.get_ConnectedServer()
   at WindowsFormsApplication1.Form1.button1_Click(Object sender, EventArgs e)

InnerException=An operations error occurred.

StackTrace=   at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
   at System.DirectoryServices.DirectoryEntry.Bind()
   at System.DirectoryServices.DirectoryEntry.get_SchemaEntry()
   at System.DirectoryServices.AccountManagement.ADStoreCtx.IsContainer(DirectoryEntry de)
   at System.DirectoryServices.AccountManagement.ADStoreCtx..ctor(DirectoryEntry ctxBase, Boolean ownCtxBase, String username, String password, ContextOptions options)
   at System.DirectoryServices.AccountManagement.PrincipalContext.CreateContextFromDirectoryEntry(DirectoryEntry entry)
   at System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInit()

我以AD中具有DomainAdmin权限的用户身份登录。

我运行此计算机的计算机在AD中具有DomainAdmin权限。

This链接有一个解决方案,但它适用于IIS,但对我来说并不起作用。

This解决方案也无效。

1 个答案:

答案 0 :(得分:2)

由于您已经提到用户已拥有管理员权限,因此您只需指定ContextTypeDomain

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "yourdomain.com");