Получение адреса электронной почты NULL из Active Directory (AccountManagement UserPrincipal)

У меня есть проблема, и я не могу найти решение:

У меня есть приведенный ниже код для получения пользователя электронной почты (EmailAddress), который обращается к веб-приложению.

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;

Для некоторых пользователей (пока трое) электронная почта (EmailAddress) имеет нулевое значение.

Я также пробовал код ниже, и происходит то же самое:

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

Я подозреваю, что это как-то связано с Exchange Server, но не могу сказать из-за недостатка знаний.

Кто-нибудь может помочь?


person Pedro Fernandes Filho    schedule 26.03.2013    source источник


Ответы (1)


Система размещена на архитектуре, использующей леса и дерево доменов.

Реализованный код обращается к AD контекста, в котором он выполняется.

При этом AD, отвечающий за контекст приложения, не обновлялся. Это объявление заполняли пользователи, у которых проблем не было с адресом электронной почты.

И когда он обратился к основному AD с каким-то инструментом для этого, информация была там правильной, что вызвало путаницу.

После некоторых расследований была обнаружена путаница.

Вот и все. Задача решена!

Спасибо за сотрудничество!

person Pedro Fernandes Filho    schedule 08.04.2013
comment
Обновите AD контекста, в котором работает приложение. - person Pedro Fernandes Filho; 21.10.2015
comment
Я столкнулся с той же проблемой. В коде нет ничего плохого, это был сам сервер AD, у которого были неверные данные. - person Jonathan Allen; 21.01.2016