HttpClient.GetAsync не работает
Почему этот код не работает? Я использовал подобные вещи ранее, что делает его еще более запутанным. Он просто выходит из строки "await httpClient.GetAsync..." без каких-либо исключений, которые можно перехватить в try/catch. У меня есть такой же точный код в образце консольного приложения для.net 4.5 и тестирования на двух разных машинах с получением одинакового результата (или его отсутствия).
РЕДАКТИРОВАТЬ: весь образец Program.cs
using System;
using System.Net.Http;
namespace Main
{
class Program
{
static void Main(string[] args)
{
DownloadPageAsync();
}
private static async void DownloadPageAsync()
{
var httpClient = new HttpClient();
var response = await httpClient.GetAsync("http://en.wikipedia.org/");
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
httpClient.Dispose();
Console.ReadLine();
}
}
}
1 ответ
Основной поток заканчивается до завершения метода DownloadPageAsync.
Вы используете void в сигнатуре метода, что означает, запустить и забыть. Когда вы вызываете метод DownloadPageAsync внутри метода Main, если он выполняется слишком быстро, он будет работать просто отлично, если это займет немного больше времени, он завершит программу до выполнения кода. Вы должны использовать Task в DownloadPageAsync и.Result в методе Main, чтобы дождаться выполнения кода.
Или измените Console.ReadLine(); в основной метод, а не.Результат. это также должно работать, если вы не нажмете клавишу ввода:).