¿HttpClient (C #) falla en muchas solicitudes asíncronas?

Estoy usando HttpClient para realizar asíncronamente muchas solicitudes a una API externa. Espero a que todas las solicitudes se completen, luego uso las respuestas en otro código. Mi problema es que si hago demasiadas solicitudes, mi código lanza una excepción cuando uso la Tarea. Cuando todo está en espera.

En última instancia, este código se ejecutará en paralelo, lo que significa que haré muchos conjuntos de estas solicitudes asíncronas al mismo tiempo (es decir, 10 conjuntos de 200 solicitudes asíncronas). He creado una instancia de un HttpClient que estoy usando con modificadores async / await .NET 4.5 como este:

using (var client = new HttpClient())
{
    // make a list of tasks
    List<Task<HttpResponseMessage>> taskList;
    List<MyData> replies;
    for (int i = 0; i < MAX_NUMBER_REQUESTS; i++)
    {
        taskList.Add(client.GetAsync(externalUri);
    }

    List<HttpResponseMessage> responses = await Task.WhenAll(taskList);

    // read each response after they have returned
    foreach (var response in responses)
    {
        var reader = new System.IO.StreamReader(await response.Content.ReadAsStreamAsync());
        replies.Add(JsonConvert.DeserializeObject<MyData>(reader.ReadToEnd()));
        reader.Close();
} 

    foreach (var reply in replies)
    {
        // do something with the response from the external api call...
    }
}

Sigo recibiendo una TaskCanceledException. Después de ver esto, vi que esto es posiblemente un problema de tiempo de espera. No tengo ni idea de cómo arreglarlo. Intenté agrupar mis solicitudes en 100 solicitudes antes de usar la Tarea. Cuando todo se repitió, lo cual funcionó. Luego, cuando lo ejecuté en paralelo con tres conjuntos de 100 solicitudes que fallan. ¿Me estoy perdiendo algo? ¿Alguien tiene alguna idea de esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta