从Active Directory获取EmailAddress NULL(AccountManagement UserPrincipal)

时间:2013-03-26 17:49:45

标签: active-directory null account-management email-address userprincipal

我遇到了问题,无法找到解决方案:

我有以下代码来检索正在访问Web应用程序的电子邮件(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有关,但我不能说缺乏知识。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

系统托管在使用森林和域树的架构上。

实现的代码访问正在运行的上下文的AD。

在这种情况下,负责应用程序上下文的AD未更新。有问题的用户没有填写本AD的电子邮件地址。

当它咨询主要AD时,有一些工具,信息是正确的,这引起了混乱。

经过一些调查后发现混乱。

就是这样。问题解决了!

感谢您的合作!