使用Active Directory从UserPrincipal发送电子邮件地址为null

时间:2017-07-19 13:25:53

标签: ldap userprincipal

Getting EmailAddress NULL from Active Directory (AccountManagement UserPrincipal)

参考上面的主题,任何人都可以使用确切的解决方案。我知道我的代码在许多Active Directory服务器上运行良好,但有一个Active Directory部署导致了这个问题。

我已经使用LDAP查询和资源管理器检查了用户属性和电子邮件,这对我来说似乎很好。下面是可以正常工作的代码,并获取域abc.com.pk的所有电子邮件地址。

DirectoryEntry entry = new DirectoryEntry("LDAP://abc.com.pk");
            DirectorySearcher dSearch = new DirectorySearcher(entry);
            dSearch.Filter = "(objectClass=user)";
            Console.WriteLine("Email addresses configure in your domain are");
            var allUsers =  dSearch.FindAll();
            foreach (SearchResult sResultSet in allUsers)
            {
                if (sResultSet.Properties["mail"].Count > 0)
                {
                    Console.WriteLine(i+": "+sResultSet.Properties["mail"][0]);
                    i++;
                }

            }

这是我的代码无效,应该可以正常工作。

    using (var principalContext = new PrincipalContext(ContextType.Domain | ContextType.Machine))
                            {
                                using (UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(principalContext, identity.Name))
                                { 
var emailAddress = UserPrincipal.EmailAddress; // this is null
}}

以上回答有一定道理,但如果有人可以提供帮助我需要详细信息。 感谢

1 个答案:

答案 0 :(得分:0)

到目前为止我已理解的问题:

在IIS下以特定标识运行的Web应用程序。此池身份帐户没有足够的权限来访问AD。

只需更改权限或将池标识更改为默认值之一,即NetworkServices或IdentityPool

由于