HttpClient в использовании оператора вызывает Задача отменена

Я создалFileResult : IHttpActionResult Тип возврата webapi для моих вызовов API. FileResult загружает файл с другого URL-адреса, а затем возвращает поток клиенту.

Изначально мой код имелusing утверждение как ниже:

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)
    {...}
}

Однако это будет периодически вызыватьTaskCanceledException, Я знаю, что если HttpClient удаляется до завершения асинхронного вызова, состояние задачи изменится на отмененное. Однако, так как я используюЖдите в:Content = new System.Net.Http.StreamContent(await httpClient.GetStreamAsync(this.filePath)) это должно препятствовать удалению HttpClient в середине выполнения задачи.

Почему эта задача отменяется? Это не из-за тайм-аута, так как это произошло для самых маленьких запросов и не всегда происходит для больших запросов.

Когда я удалилusing Скажите, что код работает правильно:

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)
    {...}
}

Любая идея, почему использование вызвало проблему?

Ответы на вопрос(2)

Ваш ответ на вопрос