Silverlight Windows Phone 7:从URL加载图片

问题描述:

我得到了下面的代码,试图从网络加载图像到一个图像控件,当我运行它时,我得到一个错误在给定的行,没有网络访问被允许:Silverlight Windows Phone 7:从URL加载图片

private void button1_Click(object sender, RoutedEventArgs e) 
     { 
      WebClient webClientImgDownloader = new WebClient(); 
      webClientImgDownloader.OpenReadCompleted += new OpenReadCompletedEventHandler(webClientImgDownloader_OpenReadCompleted); 
      webClientImgDownloader.OpenReadAsync(new Uri("http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/80000/5000/100/85108/85108.strip.print.gif", UriKind.Absolute)); 
     } 

     void webClientImgDownloader_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 
     { 
      BitmapImage bitmap = new BitmapImage(); 
      bitmap.SetSource(e.Result); // ERROR HERE! 
      image1.Source = bitmap; 
     } 

的Silverlight为Windows Phone 7

+1

问题已解决。 Silverlight不支持GIF,因此我写了一个将GIF转换为JPG的小页面:www.lenniedevilliers.net/displaygif.aspx?link=http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/ 80000/5000/100/85108/85108.strip.print.gif – 2010-03-16 15:24:05

我看到你从检索的Dilbert.com图像确实该网站有一个跨域策略文件?

+0

Windows Phone 7 Silverlight应用程序不需要跨域策略此限制已被删除,但在发布此问题和答复时未知,这可能是因为对他人有用 - 但它仍然不支持GIF。 – RoguePlanetoid 2010-04-16 13:32:07

您能否给我们完整的异常堆栈跟踪?错误可能是您的手机模拟器无法访问互联网,或者它可能是dilbert服务器上的图像,它不允许来自其网站的匿名请求......所以对解决方案的指导将有所不同:-)

尝试使用WebClient下载内容需要客户端访问策略文件存在于源服务器上。对于图像,你可以通过做这样避免这种要求: -

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    Uri uri = new Uri("http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/80000/5000/100/85108/85108.strip.print.gif", UriKind.Absolute) 
    image1.Source = new BitmapImage(uri); 
} 
+0

+1,但是由于图像是.GIF,所以这仍然有效吗? – Jacob 2010-03-16 17:27:35

+0

@Jacob:当时我没有注意到是一个Gif。答案是否定的,它不支持gifs。它确实与Lennie的修改过的URL一起工作。 – AnthonyWJones 2010-03-16 17:52:32

+0

是的,它与JPG图像的工作很好。谢谢 – 2012-12-13 11:12:38

Silverlight不支持GIF仅限JPG,所以我写了:

www.lenniedevilliers.net/displaygif.aspx?link= http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/80000/5000/100/85108/85108.strip.print.gif

displaygif.aspx页面将GIF转换为JPG格式。

+0

如果您仍然觉得有必要使用WebClient,那么也会绕过客户端访问策略问题。 – AnthonyWJones 2010-03-16 15:31:47