MSGraph bullk batching erroring "Verbindungsversuch ist fehlgeschlagen"

stimmen
0

Ich verwende MSGraph zu Charge um 97.000 Ereigniselemente (vor allem die Schaffung Ereignisse) zu MSGraph (nur 10-15 Artikel in jeder Charge Anfrage), aber es wird erroring weise auf, wenn ich versuche, und ich bin immer ein „Ein Verbindungsversuch ist fehlgeschlagen da die verbundene Partei nicht richtig nach einer Zeitspanne reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host reagieren“in meinem C # Programm fehlgeschlagen ist.

Es läuft erfolgreich ausgeführt werden, und kann jede wo von 3000 bis 65.000 Artikeln in Chargen von 10 bis 15, bevor es Fehlermeldungen erhalten, (es wird in der Regel irgendwo 17,000ish Bereich Fehler.

Ich glaube nicht , dass die Aussichten Service Grenzen sind wie hier zu sehen https://docs.microsoft.com/en-us/graph/throttling#outlook-service-limits Als ich das Programm Schlaf für 60 Sekunden für jede 1000 Einzel hatte Anfragen

Hier ist der Code ich verwende:

 List<EventBatchDetail> EventDetailList; //list of events to be put into outlook 

foreach (var batchRequestchunk in EventDetailList.ChunkBy(10))
{

    var graphServiceClient = new GraphServiceClient(new DelegateAuthenticationProvider((requestMessage) => {
        requestMessage.Headers.Add(Authorization, token);
        requestMessage.Headers.Add(Prefer, outlook.timezone=\Pacific/Auckland\);
        requestMessage.Headers.Add(Connection, Keep-Alive);

        return Task.FromResult(0);
    }));

    using (var batchRequest = new HttpRequestMessage(HttpMethod.Post, https://graph.microsoft.com/v1.0/$batch))
    {

        BatchRequestContent batchRequestContent = new BatchRequestContent();
        foreach (var batchRequestStep in batchRequestchunk)
        {
            batchRequestContent.AddBatchRequestStep(batchRequestStep.BatchRequest);
        }

        batchRequest.Content = batchRequestContent;
        token = await StaticAzureToken.Token.GetToken();

        await graphServiceClient.AuthenticationProvider.AuthenticateRequestAsync(batchRequest);

        using (var httpClient = new HttpClient())
        {
            httpClient.Timeout = new TimeSpan(0, 5, 0);
            httpClient.DefaultRequestHeaders.Add(Connection, Keep-Alive);
            HttpResponseMessage batchResponse;

            try
            {
                var tempthing = await httpClient.SendAsync(batchRequest);
                batchResponse = tempthing;

                //3. Process response
                if (!batchResponse.IsSuccessStatusCode)
                {
                    Console.WriteLine($Bad batch responce code {batchResponse.StatusCode} {(int)batchResponse.StatusCode});
                }

                var batchResponseContent = new BatchResponseContent(batchResponse);
                var responses = await batchResponseContent.GetResponsesAsync();
                string asdf = ;
                foreach (var response in responses)
                {
                    EventBatchDetail aaa = batchRequestchunk.Find(x => x.BatchRequest.RequestId.Equals(response.Key));
                    asdf = ${aaa.Status}: {aaa.UserEmail} {aaa.Eventdetail.Subject}  {aaa.Eventdetail.Start.DateTime} ID:{response.Key} Status:{(int)response.Value.StatusCode};
                    if (response.Value.IsSuccessStatusCode)
                    {
                        Utils.LoggIt(${asdf}, ConsoleColor.Green);
                    }
                    else
                    {
                        Utils.LoggIt(${asdf}, ConsoleColor.Red);
                    }
                }

            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
                Console.WriteLine(ex.InnerException.ToString());

                batchResponse = null;
            }

        }
    }
}

Vielen Dank für Ihre Zeit

Veröffentlicht am 19/03/2020 um 21:56
quelle vom benutzer
In anderen Sprachen...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more