0

Я использую этот код из приложения .NET Forms, чтобы попытаться создать объект PrincipalContext.Невозможно создать PrincipalContext в ActiveDirectory

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"); 

Я также пробовал [email protected] как идентификатор пользователя.

Я получаю эту ошибку

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() 

Я войти в систему как пользователь с правами DomainAdmin в AD.

Компьютер, на котором я запущен, имеет привилегии DomainAdmin в AD.

This link имеет решение, но оно предназначено для IIS, и это не сработало для меня.

This решение также не работает.

+1

Try 'PrincipalContext CTX = новый PrincipalContext (ContextType.Domain, "yourdomain.com", "CN = пользователей, CN = MYDOMAIN, CN = рабочая группа", ContextOptions.SecureSocketLayer | ContextOptions.Negotiate, имя пользователя, пароль) ; 'Поскольку у вас уже есть привилегии администратора, просто попробуйте связать просто, указав имя домена. 'PrincipalContext ctx = new PrincipalContext (ContextType.Domain," yourdomain.com ");' – smr5

+0

Я использовал 'SecureSocketLayer' и получил эту ошибку' Переданные ContextOptions недопустимы для этого типа хранилища. Должен быть указан либо Negotiate, либо SimpleBind, и их нельзя комбинировать. ' – Heinrich

+0

Похоже, что у вас нет' SSL'. Попробуйте 'SimpleBind'. – smr5

ответ

2

Поскольку вы упомянули, что у пользователя уже есть привилегии администратора, вам нужно указать только ContextType и ваш Domain.

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