Я потребляю разные web api
из консольного приложения через HttpClient
.Работает нормально, если обработка завершена и ответ возвращается с web api
в течение 1 минуты.Но если он выполняется больше этого, он выбрасывает ниже исключения:
исключение: произошла одна или несколько ошибок."System.AggregateException: произошла одна или несколько ошибок. ---> System.Threading.Tasks.TaskCanceledException: задача была отменена.
--- Конец трассировки стека внутренних исключений --- в System.Threading.Tasks.Task.ThrowIfExceptional (Boolean includeTaskCanceledExceptions) в System.Threading.Tasks.Task 1.GetResultCore(Boolean
waitCompletionNotification) at
System.Threading.Tasks.Task
1.get_Result ()
Я устанавливаю тайм-аут через код, устанавливая Timeout
свойство HttpClient
, тогда это работаетхорошо. Но проблема в том, что мне нужно делать это в каждом месте, где я использовал вызов * 1014. * Я не хочу обновлять это изменение везде, мне нужна глобальная конфигурация, чтобы подать заявку на все запросы.
Ниже приведен код, который я использую для вызова web api
и ожидаю ответа:
bool result = false;
System.Net.Http.HttpClient client = new System.Net.Http.HttpClient();
//client.Timeout = TimeSpan.FromMinutes(10);
System.Net.Http.HttpResponseMessage httpResponse = client.PostAsync("http://localhost:63303/api/DayRollOver/RunTasks", null).Result;
if (httpResponse.StatusCode == System.Net.HttpStatusCode.OK)
{
Console.WriteLine("Processed Successfully");
result = true;
}
else
{
Console.WriteLine($"failed. StatusCode: { ((System.Net.HttpStatusCode)httpResponse.StatusCode).ToString() }");
}
Console.WriteLine($"Result: { result }");
Я пытаюсь добавить <httpRuntime executionTimeout="300" />
в app.config, но это не решает проблему