Код: Выделить всё
public async Task SendHttpRequest()
{
HttpResponseMessage response = null;
try
{
HttpClient client = new HttpClient();
string accessToken = await GetBearerToken(resourceUrl, clientId, clientSecret, tokenProviderUrl);
if (!string.IsNullOrEmpty(accessToken))
httpRequest.Headers.Add("Authorization", ("Bearer " + accessToken));
response = await client.SendAsync(httpRequest);
}
catch(Exception ex)
{
log.Error("Exception raised while sending HTTP request");
log.Error("Exception details : " + ex.Message);
}
return response;
}
public async Task GetBearerToken()
{
HttpResponseMessage response = null;
HttpClient client = new HttpClient();
string token = "";
try
{
var request = new HttpRequestMessage(HttpMethod.Post, tokenProviderUrl);
request.Content = new FormUrlEncodedContent(new Dictionary {
{ "client_id",clientId},
{ "client_secret", clientSecret },
{ "grant_type", "client_credentials" },
{ "resource", resource },
});
response = await client.SendAsync(request);
var payload = JObject.Parse(await response.Content.ReadAsStringAsync());
token = payload.Value("access_token");
}
catch (HttpRequestException ex)
{
log.Error("Error in GetToken : " + ex.Message.ToString());
}
return token;
}
Странно, задача ждет 30 минут (или любой другой указанный нами тайм-аут), а затем выдает Задача была отмененное исключение. Это сводит меня с ума.
Я хочу знать, почему Задача отменяется, когда мы не запрашиваем ее явно, и кто или откуда отменяет задачу? Есть ли способ найти источник запроса на отмену?
Предположим, что все переменные имеют правильные значения, хотя здесь это не упоминается.
Изменить
Сообщение об исключении:
Задача была отменена.
Это трассировка стека исключений:
Exception StackTrace: at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task
task) в
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task) в
System.Net.Http.HttpClient.d__58.MoveNext()
--- Конец трассировки стека из предыдущего места, где было создано исключение --- в
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task) в
System.Runtime. CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task) в System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
в SampleProject.d__2.MoveNext() в
C:\Users\SampleProject \HttpHelper.cs:line 145
--- Конец трассировки стека из предыдущего места, где было создано исключение ---
Подробнее здесь: https://stackoverflow.com/questions/531 ... -triggered
Мобильная версия