gpt4 book ai didi

c# - Azure AD 图形 API 组搜索

转载 作者:行者123 更新时间:2023-12-03 04:33:31 26 4
gpt4 key购买 nike

我们在 azure 上有一个带有事件目录的 Office365 帐户。我正在制作一个搜索功能,使用给定的搜索词查询我们的 Azure AD。由于 Graph API 仅支持 .StartsWith(string) LINQ 查询,因此我必须提取所有组,然后使用我的搜索词查询该集合。

我正在使用 this demo 中的“获取群组成员”功能作为我的搜索功能的指南。

这是我的代码:

public List<myModel> SearchGroups(string term)
{
List<myModel> returnList = new List<myModel>();

//my service root uri
Uri serviceRoot = new Uri(serviceRootURL);

//create the client and get authorization
ActiveDirectoryClient adClient = new ActiveDirectoryClient(serviceRoot, async () => await GetAppTokenAsync());

//get collection of IGroup
IPagedCollection<IGroup> groups = adClient.Groups.ExecuteAsync().Result;

//do while loop because groups are returned in paged list...
do
{
List<IGroup> directoryObjects = groups.CurrentPage.ToList();

//get groups that contain the search term
foreach (IGroup item in directoryObjects.Where(x=>x.DisplayName.ToLower().Contains(term.ToLower())))
{
returnList.Add(new myModel(item as Microsoft.Azure.ActiveDirectory.GraphClient.Group));
}
//get next page of results
groups = groups.GetNextPageAsync().Result;

} while (groups.MorePagesAvailable); //also tried while(groups != null) same issue

return returnList;
}

如果我让它运行,代码就会挂起并且永远不会返回任何内容,如果我暂停它,它通常会卡在这一行

groups = groups.GetNextPageAsync().Result;

如果我设置一个断点并单步执行代码,它工作得很好,所以我认为这是异步方法的问题。我只是没有使用异步方法的经验,而且在我看来,图 api 文档也不是那么好,所以我陷入了困境。

使用:ASP.NET MVC、C#、azure Active Directory Graph API、Web API

最佳答案

请不要使用.Result(),它很容易出现死锁!在这种情况下,只需使用 await 关键字进行异步调用。如果您使用异步编程,则应该使整个调用异步。尝试使某些内容异步、同步是一种不好的做法

关于c# - Azure AD 图形 API 组搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32194170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com