C# HttpClient:“;HttpRequestException:发送请求时出错;

C# HttpClient:“;HttpRequestException:发送请求时出错;,c#,.net-core,C#,.net Core,我试图使用HttpClient获取图像,但出现以下错误: HttpRequestException:发送请求时出错 使用WebClient和DownloadData方法,效果很好 var cookieContainer = new CookieContainer(); using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer }) using (var client = new HttpCli

我试图使用HttpClient获取图像,但出现以下错误:

HttpRequestException:发送请求时出错

使用WebClient和DownloadData方法,效果很好

var cookieContainer = new CookieContainer();
using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer })
using (var client = new HttpClient(handler))
{
    client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36");
    client.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
    client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate");
    client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36");
    client.DefaultRequestHeaders.Add("Accept-Language", "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4");
    client.DefaultRequestHeaders.Add("Upgrade-Insecure-Requests", "1");
    client.GetAsync("cookieGenerateUrl").Wait();

    client.DefaultRequestHeaders.Remove("Accept");
    client.DefaultRequestHeaders.Add("Accept", "image/webp,image/apng,image/*,*/*;q=0.8");
    var imagem = client.GetByteArrayAsync(imageUrl).Result;
}

HttpClient类上WebClient.DownloadData的等价物是什么?

这里的问题可能是调用
client.GetByteArrayAsync时没有正确处理等待的数据

解决办法是:

var res = await client.GetByteArrayAsync(url);


提供更多数据。客户端对象的其他属性是什么?停止在异步调用上使用
.Result
.Wait()
。等待答复。请看,控制台应用程序有什么不同吗?如果我使用await,主线程会发生什么?在控制台应用程序中,最好使用C#7.1,这样就可以使用异步main方法。好的,它可以工作,但我不知道为什么。你能解释一下吗?为什么我不能只使用GetByteArrayAsync的.Result after?因为它是异步的,在您请求结果时它不在那里,是的,它没有。我建议您学习更多关于异步的知识并等待
byte[] arr;
client.GetByteArrayAsync(url).ContinueWith((x) => arr = x.Result);