Как бороться с проблемой тайм-аута при вызове службы REST. Мои GetAsync функции:Потребление отдыха api timeout
private async Task<string> GetAsync(string endPoint, string id)
{
using (var httpClient = new HttpClient())
{
SevenMResultNx<string> result = new SevenMResultNx<string>(false);
httpClient.BaseAddress = new Uri(baseAddress);
httpClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(token);
// HTTP GET
HttpResponseMessage response = await httpClient.GetAsync(String.Format("{0}/{1}", endPoint, id));
if (response.IsSuccessStatusCode)
{
return await response.Content.ReadAsStringAsync();
}
else
{
return response.ReasonPhrase;
}
}
}
называется так:
Task<string> task = GetAsync(endPoint, id);
var responseGet = task.Result;
Всякий раз, когда конечная точка является недоступной, я получил проблему, потому что процесс ждет бесконечность.
Не работает для меня. Возможно, есть ошибка в том, как я вызываю задачу. – iljon
@iljon: Ну, вы не должны использовать 'task.Result', как это, я не заметил этого. Вы должны использовать 'await', почти во всех случаях. Но мы не можем сказать, правильно ли вы передали «CancellationToken» - я немного изменил свой ответ, так как не видел вызов «ReadAsStringAsync». Я отредактирую ответ, чтобы включить его, используя ожидание. –