HttpClient bei der Verwendung der Anweisung führt dazu, dass die Aufgabe abgebrochen wird

Ich habe ein @ erstelFileResult : IHttpActionResult webapi Rückgabetyp für meine API-Aufrufe. Das FileResult lädt eine Datei von einer anderen URL herunter und gibt den Stream dann an den Client zurück.

nfangs hatte mein Code einusing Aussage wie unten:

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

Dies würde jedoch zeitweise ein @ verursacheTaskCanceledException. Ich weiß, dass, wenn der HTTP-Client entsorgt wird, bevor der asynchrone Aufruf beendet ist, sich der Status der Aufgabe in abgebrochen ändert. Da ich aber ein @ benuterwarte im:Content = new System.Net.Http.StreamContent(await httpClient.GetStreamAsync(this.filePath)) Das sollte verhindern, dass der HttpClient während der Ausführung der Aufgabe verworfen wird.

Warum wird diese Aufgabe abgebrochen? Dies liegt nicht an einer Zeitüberschreitung, da dies bei den kleinsten Anforderungen aufgetreten ist und bei großen Anforderungen nicht immer auftritt.

Wenn ich das @ entfernt hausing Anweisung der Code hat richtig funktioniert:

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

Keine Ahnung, warum die Verwendung das Problem verursacht hat?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage