2010-03-16 23 views
12

Recibí el siguiente código que intenta cargar una imagen de la web en un control de imagen. Cuando lo ejecuto, recibo un error en la línea especificada de que no se permite el acceso a la red :Silverlight Windows Phone 7: Cargar imágenes desde 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 para Windows Phone 7

+1

Problema resuelto. Silverlight no es compatible con GIF, así que escribí una pequeña página que convierte GIF a 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 –

Respuesta

3

veo que la recuperación de la imagen de Dilbert.com hace que el sitio tiene un archivo de política entre dominios?

+0

Las aplicaciones de Windows Phone 7 Silverlight no necesitan una política de dominios cruzados. Esta restricción se elimina, esto no se sabía cuando se publicó esta pregunta y respuesta, pensó que esto podría ser útil para otros, aún así no es compatible con GIF. – RoguePlanetoid

0

¿Puede darnos la traza de la pila de excepción completa? el error podría ser que su emulador de teléfono no tiene acceso a Internet, o podría ser la imagen en el servidor dilbert que no permite solicitudes anónimas que no se originaron en su sitio ... por lo que la orientación sobre una solución será diferente :-)

12

Intentar descargar contenido con WebClient requerirá que un archivo de política de acceso de cliente esté presente en el servidor de origen. Para las imágenes se puede evitar este requisito al hacerlo de esta manera: -

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, pero ¿esto todavía funciona ya que la imagen es un .GIF? – Jacob

+0

@Jacob: En ese momento no me di cuenta que era un Gif. La respuesta es no, los gifs no son compatibles. Funciona con la URL modificada de Lennie. – AnthonyWJones

+0

Sí, funciona bien con imágenes JPG. Gracias –