none
Getting EmailAddress NULL from Active Directory (AccountManagement UserPrincipal) RRS feed

  • Pergunta

  • I have a problem and can not find solution:

    I have the code below to retrieve the e-mail (EmailAddress) user that is accessing the web application.

    var pc = new System.DirectoryServices.AccountManagement.PrincipalContext(System.DirectoryServices.AccountManagement.ContextType.Domain);
    
    var user = System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(pc, System.DirectoryServices.AccountManagement.IdentityType.SamAccountName, username.ToLower());
    
    email = user.EmailAddress;

    For some users (so far three) the e-mail (EmailAddress) comes with a null value.

    I also tried the code below and the same happens:

    string connection = "LDAP://name.org";
    
    DirectoryEntry entry = new DirectoryEntry(connection);
    
    DirectorySearcher dssearch = new DirectorySearcher(entry);
    
    dssearch.Filter = "(sAMAccountName=UserLogin)";
    
    SearchResult sresult = dssearch.FindOne();
    
    DirectoryEntry dsresult = sresult.GetDirectoryEntry();
    
    if (dsresult.Properties.Count > 0)
    {
        if (dsresult.Properties["mail"].Count > 0)
            Response.Write("email: " + dsresult.Properties["mail"][0].ToString());
    }
    else
        Response.Write("<p>não encontrou</p>");

    I am suspicious that has something to do with Exchange Server, but I can not say for lack of knowledge.

    Can anyone help?

    terça-feira, 26 de março de 2013 18:47

Respostas

  •  O sistema está hospedado em uma arquitetura que usa florestas e árvore de domínios.
     
     Pois bem, o código implementado acessa o AD do contexto em que ele está sendo executado.
     
     No caso, o AD responsável pelo contexto da aplicação não estava atualizado. Os usuários que apresentavam problemas não estavam com o endereço de e-mail preenchido neste AD.
     
     E quando se consultava o AD principal, com alguma ferramenta própria para isso, as informações estavam lá corretamente, o que causava a confusão.
     
     Depois de alguma investigação foi detectada a confusão.
     
     É isso. Problema resolvido
     
     Obrigado pela colaboração!

     The system is hosted on an architecture that uses forests and tree of domains.
     
     The implemented code accesses the AD of context in which it is running.
     
     In this case, the AD responsible for the context of the application was not updated. The users who have problems were not with the e-mail address filled this AD.
     
     And when it consulted the main AD, with some tool for this, the information was there correctly, which caused confusion.
     
     After some investigations was detected confusion.
     
     That's it. Problem solved!
     
     Thanks for the cooperation!

    segunda-feira, 8 de abril de 2013 16:01

Todas as Respostas

  • Cara,

    Da uma olhada nesse exemplo:

    http://code.msdn.microsoft.com/Active-Directory-Consulta-f7715318

    Faça o teste de retornar como uma collection o resultado.

    string connection = "LDAP://name.org," + "DC=...";
    
    ...
    
    SearchResultCollection sresult = dssearch.FindAll();


    Atenciosamente, Samuel dos Anjos

    terça-feira, 26 de março de 2013 20:36
  •  O sistema está hospedado em uma arquitetura que usa florestas e árvore de domínios.
     
     Pois bem, o código implementado acessa o AD do contexto em que ele está sendo executado.
     
     No caso, o AD responsável pelo contexto da aplicação não estava atualizado. Os usuários que apresentavam problemas não estavam com o endereço de e-mail preenchido neste AD.
     
     E quando se consultava o AD principal, com alguma ferramenta própria para isso, as informações estavam lá corretamente, o que causava a confusão.
     
     Depois de alguma investigação foi detectada a confusão.
     
     É isso. Problema resolvido
     
     Obrigado pela colaboração!

     The system is hosted on an architecture that uses forests and tree of domains.
     
     The implemented code accesses the AD of context in which it is running.
     
     In this case, the AD responsible for the context of the application was not updated. The users who have problems were not with the e-mail address filled this AD.
     
     And when it consulted the main AD, with some tool for this, the information was there correctly, which caused confusion.
     
     After some investigations was detected confusion.
     
     That's it. Problem solved!
     
     Thanks for the cooperation!

    segunda-feira, 8 de abril de 2013 16:01