MSGraph bullk harmanlama erroring "bağlantı girişimi başarısız oldu"

oy
0

Ben MSGraph (her parti isteğinde sadece 10-15 madde) toplu 97,000 civarında olay öğeleri (çoğunlukla oluşturarak olaylar) için MSGraph kullanıyorum ama çalışıyorum zaman aralıklı erroring ve ben bir bağlantı girişimi başarısız oldu alıyorum bağlı uygun olarak belli bir süre içinde yanıt vermedi çünkü bağlanılan ana makine benim C # programında yanıt verdiklerini başarısız oldu çünkü ya kurulan bağlantı başarısız oldu.

Başarıyla çalıştırmak çalışır ve (genellikle bir yerde 17,000ish dizi hata olacaktır, bu hataların önce 10-15 gruplar halinde 65.000'e 3000 öğelerden herhangi bir yerde alabilirsiniz.

Buranın görüldüğü gibi görünüm hizmet sınırları olduğuna inanmıyorum https://docs.microsoft.com/en-us/graph/throttling#outlook-service-limits ben her 1000 kişi için 60 saniye programı uyku gibi istekler

İşte ben kullanıyorum kodudur:

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

        }
    }
}

Zaman ayırdığınız için teşekkürler

Oluştur 19/03/2020 saat 21:56
kaynak kullanıcı
Diğer dillerde...                            

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