using Microsoft.Azure.ActiveDirectory.GraphClient
,我想从Azure Active Directory获取20个帐户;给他们的电子邮件地址我现在可以向Azure AD服务器发送20个请求,但与此同时,我的脚本超时。所以我尝试了一个请求:
public override IEnumerable<IDirectoryEntry> GetEntriesForMails(IEnumerable<MailAddress> emails)
{
foreach(IUser user in _connection.Client.Users.Where(x => emails.Contains(x.Mail)).FlattenPages())
{
yield return new AzureDirectoryEntry(user, this);
}
这会引发错误
&#34;包含&#34;不受支持。
是否有其他受支持的方式可以在一次往返服务器的途中获取20个电子邮件地址的所有用户帐户?
答案 0 :(得分:0)
尝试代码:
List<IUser> users = activeDirectoryClient.Users.ExecuteAsync().Result.CurrentPage.ToList();
List<IUser> user1 = users.Where(u => emails.Any(e => e.Contains(u.Mail))).ToList();
答案 1 :(得分:0)
根据Microsoft员工的说法,库中没有直接的解决方案。
我们可以提出的最佳解决方案是保留一个客户端查找表,将电子邮件地址映射到ObjectIds;并定期更新该表(每天/每周,以及每当查找失败时)。
然后,可以通过一次调用(GetObjectsByObjectIdsAsync
方法)从Azure AD获取20个ObjectIds的对象。