首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有Delta令牌的delta查询: Microsoft

带有Delta令牌的delta查询: Microsoft
EN

Stack Overflow用户
提问于 2022-02-10 14:18:14
回答 1查看 323关注 0票数 0

我正在为在.netcore应用程序中使用Microsoft的用户编写更改通知。我正在使用增量查询来获取最新的更改。

代码语言:javascript
复制
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。在这种情况下,应用程序下次运行时,它将返回所有用户。我不想得到所有的用户,我只是想得到改变的用户。

是否有一种方法可以使用最新的增量链接进行增量查询?

我尝试了下面的内容,但是我的查询错误的格式很糟糕。

代码语言:javascript
复制
var queryOptions = new List<QueryOption>()
                    {
                        new QueryOption("$deltatoken", deltaLink?.ToString())
                    };

await graphClient.Users.Delta().Request(options).GetAsync();
EN

回答 1

Stack Overflow用户

发布于 2022-02-10 14:55:00

您可以通过将deltaLink添加到增量函数来请求最新的$deltaToken=latest,响应将包含一个deltaLink,而不包含资源数据。

然后您需要使用接收到的deltaLink

代码语言:javascript
复制
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();
}

资源:

delta查询

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71066741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档