HttpClient ao usar a instrução causa a tarefa cancelada

Eu criei umFileResult : IHttpActionResult tipo de retorno webapi para minhas chamadas api. O FileResult baixa um arquivo de outro URL e retorna o fluxo ao cliente.

Inicialmente, meu código tinha umusing declaração como abaixo:

public async Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
    try
    {
        HttpResponseMessage response;
        using (var httpClient = new HttpClient())
        {

            response = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new System.Net.Http.StreamContent(
                                    await httpClient.GetStreamAsync(this.filePath))
            };
        }
        return response;
    }
    catch (WebException exception)
    {...}
}

No entanto, isso causaria intermitentemente umaTaskCanceledException. Sei que se o HttpClient for descartado antes do término da chamada assíncrona, o estado da tarefa mudará para cancelado. No entanto, desde que eu uso umaguardam no:Content = new System.Net.Http.StreamContent(await httpClient.GetStreamAsync(this.filePath)) isso deve impedir que o HttpClient seja descartado no meio da conclusão da tarefa.

Por que essa tarefa é cancelada? Não é devido a um tempo limite, pois isso ocorreu nas solicitações menores e nem sempre ocorre em solicitações grandes.

Quando eu removi ousing declaração o código funcionou corretamente:

public async Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
    try
    {
        HttpResponseMessage response;
        var httpClient = new HttpClient();

        response = new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new System.Net.Http.StreamContent(
                                await httpClient.GetStreamAsync(this.filePath))
        };
        return response;
    }
    catch (WebException exception)
    {...}
}

Alguma idéia de por que o uso causou o problema?

questionAnswers(2)

yourAnswerToTheQuestion