2010-03-16 9 views
12

Ich habe den folgenden Code, der versucht, ein Bild aus dem Internet in ein Image-Steuerelement zu laden, bekomme ich einen Fehler in der angegebenen Zeile, dass kein Netzwerkzugriff erlaubt ist :Silverlight Windows Phone 7: Laden Bilder von 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 für Windows Phone 7

+1

Problem behoben. Silverlight unterstützt GIF nicht, also schrieb ich eine kleine Seite, die GIF in JPG konvertiert: www.lenniedevilliers.net/displaygif.aspx?link=http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/ 80000/5000/100/85108/85108.strip.print.gif –

Antwort

3

ich sehe, dass Sie das Abrufen des Bildes von Dilbert.com ist, dass vor Ort eine Cross-Domain-Richtliniendatei haben?

+0

Windows Phone 7 Silverlight-Anwendungen benötigen keine Cross-Domain-Richtlinie Diese Einschränkung wurde entfernt, dies war nicht bekannt, wenn diese Frage und Antwort gepostet wurde, dachte, dies könnte sein nützlich für andere - es unterstützt jedoch immer noch nicht GIF. – RoguePlanetoid

0

Können Sie uns die vollständige Trace-Aufzeichnung des Exception Stacks geben? der Fehler könnte sein, dass Ihr Telefon-Emulator keinen Internetzugang hat, oder es könnte das Bild auf dem Dilbert-Server sein, das keine anonymen Anfragen erlaubt, die nicht von ihrer Seite stammen ... also wird die Anleitung zu einer Lösung anders sein :-)

12

Beim Versuch, Inhalte mit WebClient herunterzuladen, muss eine Client-Zugriffsrichtliniendatei auf dem Quellserver vorhanden sein. Für Bilder können Sie diese Anforderung vermeiden, indem es wie folgt vorgehen: -

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, aber funktioniert das immer noch, da das Bild ein .GIF ist? – Jacob

+0

@Jacob: Zu der Zeit habe ich nicht bemerkt, war ein Gif. Die Antwort ist nein, es werden keine Gifs unterstützt. Es funktioniert mit Lennies geänderter URL. – AnthonyWJones

+0

Ja, es funktioniert gut mit JPG-Bildern. Danke –

Verwandte Themen