MSgraph bullk बैचिंग erroring "कनेक्शन का प्रयास विफल"

वोट
0

मैं msgraph (प्रत्येक बैच अनुरोध में केवल 10-15 आइटम) के लिए बैच 97,000 के आसपास घटना आइटम (ज्यादातर घटनाएं निर्मित) को MSgraph उपयोग कर रहा हूँ, लेकिन यह रुक-रुक कर erroring है जब मैं कोशिश कर रहा हूँ और मैं एक एक कनेक्शन का प्रयास विफल हो रही है क्योंकि कनेक्ट किए गए पक्ष ठीक से समय की अवधि के बाद कोई जवाब नहीं दिया, या स्थापित कनेक्शन विफल रहा क्योंकि कनेक्ट किए गए मेजबान मेरी सी # कार्यक्रम में जवाब में नाकाम रही है।

यह सफलतापूर्वक चलाने चलाता है, और इससे पहले कि यह त्रुटियों 10-15 के बैच में 65,000 करने के लिए 3000 आइटम से किसी भी जहां प्राप्त कर सकते हैं, (यह आम तौर पर कहीं न कहीं 17,000ish रेंज त्रुटि होगा।

मैं नहीं मानता कि यह दृष्टिकोण सेवा सीमा के रूप में यहाँ देखा है https://docs.microsoft.com/en-us/graph/throttling#outlook-service-limits जैसा कि मैंने हर 1000 व्यक्ति के लिए 60 सेकंड के लिए कार्यक्रम नींद था अनुरोध

यहाँ कोड मैं का उपयोग कर रहा है:

 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