MSgraph bullk παρτίδων erroring «προσπάθεια σύνδεσης απέτυχε»

ψήφοι
0

Είμαι χρησιμοποιώντας MSgraph σε παρτίδα περίπου 97.000 αντικείμενα περίπτωση (κυρίως τη δημιουργία εκδηλώσεων) για να msgraph (μόνο 10-15 κομμάτια σε κάθε αίτημα παρτίδα), αλλά κατά διαστήματα erroring όταν εγώ προσπαθώ και εγώ παίρνω μια «προσπάθεια σύνδεσης A απέτυχε επειδή το συνδεδεμένο συμβαλλόμενο μέρος δεν απαντήσει σωστά μετά από ένα χρονικό διάστημα, ή η σύνδεση απέτυχε, επειδή συνδεμένο έχει αποτύχει να ανταποκριθεί»σε C # μου πρόγραμμα.

Τρέχει με επιτυχία τρέχουν, και μπορεί να πάρει οπουδήποτε από το 3000 στοιχεία για 65.000 σε παρτίδες των 10-15 πριν από σφάλματα, (που συνήθως λάθος κάπου 17,000ish φάσμα.

Δεν πιστεύω ότι είναι τα όρια των υπηρεσιών προοπτικές, όπως φαίνεται εδώ https://docs.microsoft.com/en-us/graph/throttling#outlook-service-limits Όπως είχα τον ύπνο του προγράμματος για 60 δευτερόλεπτα για κάθε 1000 ατομικές αιτήσεων

Εδώ είναι ο κώδικας είμαι με τη χρήση:

 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;
            }

        }
    }
}

Σε ευχαριστώ για τον χρόνο σου

Δημοσιεύθηκε 19/03/2020 στις 21:56
πηγή χρήστη
Σε άλλες γλώσσες...                            

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