代码之家  ›  专栏  ›  技术社区  ›  user989988

进行一些图形调用后返回成功/错误响应

  •  0
  • user989988  · 技术社区  · 3 年前

    我有以下代码将用户添加到AAD组:

            public async Task AddUsersToGroup(IEnumerable<BatchRequestContent> batches)
            {            
                try
                {
                    foreach (var batchRequestContent in batches)
                    {
                        var response = await _graphServiceClient
                            .Batch
                            .Request()
                            .WithMaxRetry(10)
                            .PostAsync(batchRequestContent);
    
                        var responses = await response.GetResponsesAsync();
    
                        foreach (string key in responses.Keys)
                        {
                            var httpResponse = await response.GetResponseByIdAsync(key);
                            httpResponse.EnsureSuccessStatusCode();                       
                        }                    
                    }
                }
                catch (Exception ex)
                {
                    await _log.LogMessageAsync(new LogMessage
                    {
                        Message = ex.GetBaseException().ToString(),
                        RunId = RunId
                    });
    
                    throw;
                }
            }
    

    如果所有请求都返回了成功响应,我需要更新此方法以返回“Ok”,否则如果任何请求返回了错误响应,则返回“Error”。我该怎么做?请帮忙!

            private IEnumerable<BatchRequestContent> GetBatchRequest(IEnumerable<AzureADUser> users, AzureADGroup targetGroup)
            {
                var batches = new List<BatchRequestContent>();
                int maxNoBatchItems = 20;
    
                var batchRequestContent = new BatchRequestContent();
                int requestId = 1;
    
                foreach (var user in users)
                {
                    JObject body = new JObject
                    {
                        ["members@odata.bind"] = $"https://graph.microsoft.com/v1.0/users/{user.ObjectId}"
                    };
    
                    var httpRequestMessage = new HttpRequestMessage(HttpMethod.Patch, $"https://graph.microsoft.com/v1.0/groups/{targetGroup.ObjectId}");
                    httpRequestMessage.Content = new StringContent(body.ToString(), Encoding.UTF8, "application/json");
    
                    batchRequestContent.AddBatchRequestStep(new BatchRequestStep(requestId.ToString(), httpRequestMessage));
    
                    if (batchRequestContent.BatchRequestSteps.Count() % maxNoBatchItems == 0)
                    {
                        batches.Add(batchRequestContent);
                        batchRequestContent = new BatchRequestContent();
                    }
    
                    requestId++;
                }
    
                if (batchRequestContent.BatchRequestSteps.Count < maxNoBatchItems)
                {
                    batches.Add(batchRequestContent);
                }
    
                return batches;
            }
    
    0 回复  |  直到 3 年前