0

Я пытаюсь получить информацию о пользователе из другого домена, но его метания следующее сообщение об ошибке:Как получить данные пользователя из разных домена «System.Runtime.InteropServices.COMException»

An exception of type 'System.Runtime.InteropServices.COMException' occurred in System.DirectoryServices.dll but was not handled in user code

код, как как показано ниже:

// Getting domain 
var context = new DirectoryContext(DirectoryContextType.Domain, "alpha"); 
Domain domain = Domain.GetDomain(context); 

using (DirectorySearcher searcher = new DirectorySearcher()) 
{ 
    var de = new DirectoryEntry(domain.Name); 
    searcher.SearchRoot = de; 
    searcher.SearchScope = SearchScope.Subtree; 
    searcher.PropertiesToLoad.Add("sAMAccountName"); 
    searcher.Filter = string.Format("(&(objectClass=user)(sAMAccountName={0}))", "myusername"); 

    // *** ERROR HERE ***   
    var results = searcher.FindAll(); 
} 

Я уже попытался запустить Visual Studio в качестве администратора домена, но не повезло.

Заранее спасибо.

+0

Что-нибудь во внутреннем исключении? – danish

+0

Нет его значения. ..... – Scorpion

+0

Вы пытаетесь читать из другого домена, чем тот, с которым вы подключены? Вы пытались указать всю строку LDAP для DC (LDAP: // xxx) в конструкторе DirectoryEntry? – scheien

ответ

0

Следующий код работает только при добавлении пространства имен с использованием System.DirectoryServices.ActiveDirectory, а также добавлении ссылки.

// Get user name 
string userName = User.Identity.Name; 
var domainName = username.Split('\\')[0]; 

// Getting domain 
var directoryContext = new DirectoryContext(DirectoryContextType.Domain, domainName); 
Domain domain = Domain.GetDomain(directoryContext); 

using (PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, domain.Name)) 
{ 
    using (UserPrincipal user = UserPrincipal.FindByIdentity(principalContext, userName)) 
    { 
     if (user != null) 
     { 
      // Get details here 
      var name = user.GivenName; 
     } 
    } 
} 
+0

Работает отлично для меня, пока я не доберусь до PrincipalContext, тогда он бросает то же исключение, что и вопрос. Я читаю из другого домена, поэтому я уверен, что это часть проблемы. – John81

Смежные вопросы