如何从url c#.Net核心获取图像

如何从url c#.Net核心获取图像,c#,asp.net-core,C#,Asp.net Core,我使用HttpWebRequest从url获取流。在.Net Framework中,我获取的图像流如下所示: HttpWebRequest rq=(HttpWebRequest)WebRequest.Create(new Uri(url)); Stream stream=rq.GetRequestStream(); HttpWebRequest rq=WebRequest.CreateHttp(new Uri(url)); Stream stream=rq.GetRequestStreamAs

我使用HttpWebRequest从url获取流。在.Net Framework中,我获取的图像流如下所示:

HttpWebRequest rq=(HttpWebRequest)WebRequest.Create(new Uri(url));
Stream stream=rq.GetRequestStream();
HttpWebRequest rq=WebRequest.CreateHttp(new Uri(url));
Stream stream=rq.GetRequestStreamAsync().Result;
这很好用。当我在.Net Core中执行此操作时,它不起作用。代码如下:

HttpWebRequest rq=(HttpWebRequest)WebRequest.Create(new Uri(url));
Stream stream=rq.GetRequestStream();
HttpWebRequest rq=WebRequest.CreateHttp(new Uri(url));
Stream stream=rq.GetRequestStreamAsync().Result;

如何在ASP.NET core中实现这一点?

我想您得到的是
ProtocolViolationException
aggregateeException
。(有关详细说明,请参阅。)

如果您试图从远程URL获取内容,则应使用

顺便说一句,我建议您继续阅读。

试试这个:

 using (HttpClient c = new HttpClient())
 {
      using (Stream s = await c.GetStreamAsync(imgUrl))
      {
          // do any logic with the image stream, save it,...
      }
 }

请阅读并详细说明“不起作用”。在调用获取响应之前是否关闭请求流?@CodeCaster,谢谢您的建议。这是我第一次使用Stackoverflow。下次我会做得更好。用户正在尝试同步调用异步方法,这不是必需的/不是一个好的做法,但GetRequestStreamAsync()。结果也应该有效,尽管这将是一个阻塞呼叫。@SSA谢谢。我做了一些现场测试并更新了答案。@DanteisnotaGeek谢谢你的回答,我尝试使用GetResponseAsync代替GetRequestStreamAsync,现在效果很好。