А пока, пожалуйста, взгляните на следующий способ решения этой проблемы:
Я представил некоторую логику повторных попыток в сочетании с методом await Task.Delay()
, который, кажется, немного помогает, и еслине удается выполнить вышеуказанную ошибку, обычно для продолжения достаточно 4-5 повторных попыток.
public async Task<string> PostTheContentAsync(HttpClient httpClient, object campaignManagerObject, string reqUrl, int retriesRemaining = 5)
{
try
{
ByteArrayContent byteContent = CreateByteArrayContent(campaignManagerObject);
var response = await httpClient.PostAsync(reqUrl, byteContent);
response.EnsureSuccessStatusCode();
IEnumerable<string> headerValue = response.Headers.GetValues("X-LinkedIn-Id");
return headerValue.First();
}
catch
{
if (retriesRemaining > 0) //and exception is temporary
{
await Task.Delay(5000);
return await PostTheContentAsync(httpClient, campaignManagerObject, reqUrl, retriesRemaining - 1);
}
throw new Exception($"Error while posting the content of {campaignManagerObject.GetType()} for URL: {reqUrl} in {nameof(ManagementBaseClass)}, {nameof(PostTheContentAsync)}.");
}
}