C#:如何使用Microsoft Graph API强制满负荷用户?

C#:如何使用Microsoft Graph API强制满负荷用户?,c#,.net-core,azure-active-directory,microsoft-graph-api,delta,C#,.net Core,Azure Active Directory,Microsoft Graph Api,Delta,有没有一种方法可以控制Azure函数是处理满负载增量还是增量负载增量 我正在使用Microsoft Graph API从Azure AD获取用户信息,并且自上次执行加载以来,我执行了增量加载的代码 我希望能够执行Azure AD用户的全部负载,而无需清除/删除相关存储帐户,特别是在生产场景中。有关守则如下: public async Task<GraphUserProcessorResult> CheckUserDelta(DeltaBuilder deltaBuilder, ILo

有没有一种方法可以控制Azure函数是处理满负载增量还是增量负载增量

我正在使用Microsoft Graph API从Azure AD获取用户信息,并且自上次执行加载以来,我执行了增量加载的代码

我希望能够执行Azure AD用户的全部负载,而无需清除/删除相关存储帐户,特别是在生产场景中。有关守则如下:

public async Task<GraphUserProcessorResult> CheckUserDelta(DeltaBuilder deltaBuilder, ILogger logger)
    {
        List<User> gUsers = new List<User>();
        var index = 1;
        var userPg = await GetNewPgUser(deltaBuilder, logger);
        gUsers.AddRange(usersPg.Where(IsRelevantUser));
        while (usersPg.NextPageRequest != null)
        {
            index++;
            usersPg = await usersPg.NextPageRequest.GetAsync();
        }
        GraphUserProcessorResult gUserResult;
        logger.LogInformation("Found in graph " + gUsers.Count + " after " + index + " requests");
        index = 0;
        foreach (var gUser in gUsers)
        {
            index++;
            if (index >= 10) { break; }
        }

        if (userPg.AdditionalData != null && usersPage.AdditionalData.TryGetValue("@odata.deltaLink", out object deltaLink))
        {
            gUserResult = new GraphUserProcessorResult(new DeltaBuilder(deltaLink as string, userPg), gUsers);
        }
        else
        {
            gUserResult = new GraphUserProcessorResult(null, gUsers);
            logger.LogWarning("No Delta Link Found");
        }

        return gUserResult;
    }

 private async Task<IUserDeltaCollectionPage> GetNewPgUser(DeltaBuilder deltaBuilder, ILogger logger)
    {
        var lastPg = deltaBuilder?.lastPg;
        var deltaLink = deltaBuilder?.deltaLink;
        var retriesLeft = 5;
        ServiceException lastException = null;
        while (--retriesLeft > 0)
        {
            try
            {
                if (lastPage != null && deltaLink != null)
                {
                    return await _gUserClient.GetNextUserPage(lastPage, deltaLink)
                        .ConfigureAwait(true); // mute warning
                }
                else
                {
                    return await _graphUserClient.GetNewUserDelta()
                        .ConfigureAwait(true); // mute warning
                }
            }
            catch (ServiceException e)
            {
                // blah
            }
        }

        logger.LogError("blah");
        throw lastException;
    }
公共异步任务CheckUserDelta(DeltaBuilder DeltaBuilder、ILogger记录器)
{
List gUsers=新列表();
var指数=1;
var userPg=await GetNewPgUser(deltaBuilder、logger);
AddRange(usersPg.Where(IsRelevantUser));
while(usersPg.NextPageRequest!=null)
{
索引++;
usersPg=await usersPg.NextPageRequest.GetAsync();
}
GraphUserProcessorResult gUserResult;
logger.LogInformation(“在图形“+gUsers.Count+”中找到,位于“+index+”请求之后”);
指数=0;
foreach(变量gUser在gUser中)
{
索引++;
如果(索引>=10){break;}
}
if(userPg.AdditionalData!=null&&usersPage.AdditionalData.TryGetValue(@odata.deltaLink”,out-object-deltaLink))
{
gUserResult=新的GraphUserProcessorResult(新的DeltBuilder(DeltLink作为字符串,userPg),gUsers);
}
其他的
{
gUserResult=新GraphUserProcessorResult(null,gUsers);
logger.LogWarning(“未找到增量链接”);
}
返回gUserResult;
}
专用异步任务GetNewPgUser(DeltaBuilder DeltaBuilder、ILogger记录器)
{
var lastPg=deltaBuilder?.lastPg;
var deltaLink=deltaBuilder?.deltaLink;
var-retriesLeft=5;
ServiceException lastException=null;
而(--retriesLeft>0)
{
尝试
{
if(lastPage!=null&&deltaLink!=null)
{
return wait_gUserClient.GetNextUserPage(最后一页,deltaLink)
.ConfigureAwait(true);//静音警告
}
其他的
{
return await\u graphUserClient.GetNewUserDelta()
.ConfigureAwait(true);//静音警告
}
}
捕获(服务异常e)
{
//废话
}
}
logger.LogError(“blah”);
抛出最后一个异常;
}

请参阅Microsoft Graph官方文档:

此增量端点旨在获取对用户的更改,而无需从Microsoft Graph获取整个用户集并比较更改


并没有一个端点允许您执行Azure AD用户的满载增量。唯一的解决方法是获取整个用户集,并按照文档中提到的那样自己比较更改。

如果我的答案对您有帮助,您可以将其作为答案接受(单击答案旁边的复选标记,将其从灰色变为填充)。看见这可能对其他社区成员有益。非常感谢。