Задача отменена исключение для долго выполняющейся задачи - PullRequest
0 голосов
/ 11 июня 2018

У меня есть метод в клиенте WPF для веб-API:

public async Task PostFileAsync(string localPath, string serverPath)

В основе этого метода лежит вызов:

var resp = await _client.PostAsync(uri, content);

, где _client - это HttpClient экземпляр.

Когда я пытаюсь загрузить большие файлы, которые, очевидно, занимают слишком много времени, я получаю исключение A task was canceled. со следующей трассировкой стека:

at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Net.Http.HttpClient.<FinishSendAsyncBuffered>d__58.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at QuickDrive.Wpf.Api.ApiClient.<PostFileAsync>d__10.MoveNext() in C:\Projects\QuickDrive\Code\QuickDrive.Wpf\Api\ApiClient.cs:line 176

Я не вижу здесь упоминания о каком-либо таймауте,но эта задача хорошо выполняется для сообщений, которые занимают менее 10 минут (я точно не рассчитал время), например, для моего подключения для файлов размером менее + -500 МБ.

Действительно ли это исключение из-за тайм-аутаи, если да, как я могу настроить await для обеспечения настраиваемого времени перед отменой задачи;предполагая, что задача отменена из-за тайм-аута.Он никогда не отменяется ни для какого другого сценария, кроме как при попытке загрузить большой файл.

1 Ответ

0 голосов
/ 11 июня 2018

Дайте этому попытку

httpClient.Timeout

Получает или задает временной интервал ожидания до истечения времени ожидания запроса.

Чтобы установить бесконечное время ожидания, установите для свойства значение InfiniteTimeSpan.

Похоже, что HttpClient просто отключается и отменяет задачу

...