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
}}
以上回答有一定道理,但如果有人可以提供帮助我需要详细信息。 感谢
答案 0 :(得分:0)
到目前为止我已理解的问题:
在IIS下以特定标识运行的Web应用程序。此池身份帐户没有足够的权限来访问AD。
只需更改权限或将池标识更改为默认值之一,即NetworkServices或IdentityPool
由于