PostAsync HttpClient error with Web Api - System.AggregateException "A task was canceled."

pfeds picture pfeds · May 13, 2013 · Viewed 14.4k times · Source

I'm trying to call PostAsync method using System.Net.Http.HttpClient from the Web API. I get the following error:

System.AggregateException "A task was canceled."

Task:

Id = 1, Status = System.Threading.Tasks.TaskStatus.Canceled, Method = "{null}", Result = "{Not yet computed}"

Code:

using (HttpClientHandler handler = new HttpClientHandler())
{
    handler.Credentials = new NetworkCredential("MyUsername", "p@ssw0rd");

    using (HttpClient client = new HttpClient(handler))
    {
        var postData = new List<KeyValuePair<string, string>>();
        postData.Add(new KeyValuePair<string, string>("status", "Hello world"));

        HttpContent content = new FormUrlEncodedContent(postData);

        var responseTask = client.PostAsync(url, content).ContinueWith(
            (postTask) =>
            {
                postTask.Result.EnsureSuccessStatusCode();
            });
    }

I assume the responseTask will force the method to run synchronously?

It's a WPF application, not ASP.NET.

Answer

Ron picture Ron · Nov 14, 2014

I was getting this same error and tracked it down to my HttpClient was timing out. The default timeout is 100 seconds. I added the following to the create of the HttpClient.

HttpClient httpClient = new HttpClient();
httpClient.Timeout = TimeSpan.FromMinutes(10);