2010-03-16 135 views
12

我得到了下面的代碼,試圖從網絡加載圖像到一個圖像控件,當我運行它時,我得到一個錯誤在給定的行,沒有網絡訪問被允許: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

回答

3

我看到你從檢索的Dilbert.com圖像確實該網站有一個跨域策略文件?

+0

Windows Phone 7 Silverlight應用程序不需要跨域策略此限制已被刪除,但在發佈此問題和答覆時未知,這可能是因爲對他人有用 - 但它仍然不支持GIF。 – RoguePlanetoid 2010-04-16 13:32:07

0

您能否給我們完整的異常堆棧跟蹤?錯誤可能是您的手機模擬器無法訪問互聯網,或者它可能是dilbert服務器上的圖像,它不允許來自其網站的匿名請求......所以對解決方案的指導將有所不同:-)

12

嘗試使用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