Limitaciones asíncronas de .NET HTTPClient

Tengo una pequeña aplicación .Net 4.5 C # que lee información de un origen de datos y luego la envía a un sitio web que es un sitio web .NET 4.5 API con un controlador simple. El controlador recibe los datos y los coloca en una base de datos.

Lo siguiente funciona para mí, tan rápido como la aplicación lo puede leer, puede escribir y todo termina en la base de datos:

    public static void PostDataToWebApi(MyDataClass tData)
    {
        HttpResponseMessage s = null;

        try
        {
            s = client.PostAsJsonAsync("/api/Station/Collector", tData).Result;
            s.EnsureSuccessStatusCode();
        }
        catch (Exception e)
        {
            Console.WriteLine("ERROR (ClientPost): " + e.ToString());
        }
    }

Lo siguiente NO funciona. PUBLICA alrededor de mil registros impares y luego aparece una serie de errores, todos con el mensaje "se canceló una tarea", pero luego de unos 10 segundos se reanuda el procesamiento:

    public static async void PostDataToWebApi(MyDataClass tData)
    {
        HttpResponseMessage s = null;

        try
        {
            s = await client.PostAsJsonAsync("/api/Station/Collector", tData);
            s.EnsureSuccessStatusCode();
        }
        catch (Exception e)
        {
            Console.WriteLine("ERROR (ClientPost): " + e.ToString());
        }
    }

El error completo es:

    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
    at IICE_DataCollector_Remote.Program.<PostDataToWebApi>d__7.MoveNext() in e:\Users\TestUser.TEST\Documents\Visual Studio 2012\Projects\Test_App-trunk\TestCollector\Program.cs:line 475

¿Alguna solución rápida para esto? Por lo que puedo decir, se queda sin algo, hilos, sockets, quién sabe :-)

Cualquier puntero sería apreciado, me encantaría hacer que esto funcione, como se puede imaginar, hacer la POST de forma síncrona es considerablemente más lento que asíncrono.

Para asegurarme de que no era mi máquina, mi antivirus local o mi red, lo probé en un servidor W2k8 R2, en un escritorio virtual invitado de Windows 7 (versión nueva) y en una máquina con Windows 8, con el mismo resultado.

Más información : Lo he probado con éxito parcial desde una conexión LAN con un conjunto de datos más pequeño (10,000 registros) y un DefaultConnectionLimit de 100. Pero, en producción con 500,000 registros, al publicar en un servidor remoto a través de Internet (aún latencia baja 25ms) -50ms) No he tenido ningún éxito.

Gracias de antemano por cualquier ayuda :-)

Respuestas a la pregunta(1)

Su respuesta a la pregunta