我正在为在.netcore应用程序中使用Microsoft的用户编写更改通知。我正在使用增量查询来获取最新的更改。
private static IUserDeltaCollectionPage? lastPage = null;
private async Task<IUserDeltaCollectionPage> GetUsers(GraphServiceClient graphClient, object? deltaLink)
{
IUserDeltaCollectionPage page;
if (lastPage == null || deltaLink == null)
{
page = await graphClient.Users
.Delta()
.Request()
.GetAsync();
}
else
{
lastPage.InitializeNextPageRequest(graphClient, deltaLink.ToString());
page = await lastPage.NextPageRequest.GetAsync();
}
lastPage = page;
return page;
}我使用这种方法所面临的问题是,如果应用程序因任何原因重新启动,那么lastPage将为null。在这种情况下,应用程序下次运行时,它将返回所有用户。我不想得到所有的用户,我只是想得到改变的用户。
是否有一种方法可以使用最新的增量链接进行增量查询?
我尝试了下面的内容,但是我的查询错误的格式很糟糕。
var queryOptions = new List<QueryOption>()
{
new QueryOption("$deltatoken", deltaLink?.ToString())
};
await graphClient.Users.Delta().Request(options).GetAsync();发布于 2022-02-10 14:55:00
您可以通过将deltaLink添加到增量函数来请求最新的$deltaToken=latest,响应将包含一个deltaLink,而不包含资源数据。
然后您需要使用接收到的deltaLink
var queryOptions = new List<QueryOption>()
{
new QueryOption("$deltatoken", "latest")
};
var page = await graphClient.Groups.Delta().Request(options).GetAsync();
var users = page.CurrentPage.ToList();
if (page.NextPageRequest!=null)
{
// get latest data
page = await page.NextPageRequest.GetAsync();
}资源:
https://stackoverflow.com/questions/71066741
复制相似问题