Silverlight Windows Phone 7: загрузка изображений по URL-адресу
Я получил код ниже, который пытается загрузить изображение из Интернета в элемент управления Image, когда я его запускаю, я получаю сообщение об ошибке на данной строке, что доступ к сети не разрешен:
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
Попытка загрузить контент с помощью 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);
}
Ответ 2
Я вижу, что вы извлекаете изображение из Dilbert.com
, имеет ли этот сайт файл политики перекрестной доски?
Ответ 3
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.
Ответ 4
Можете ли вы дать нам полную трассировку стека исключений? ошибка может заключаться в том, что ваш эмулятор телефона не имеет доступа в Интернет, или это может быть образ на сервере dilbert, который не позволяет анонимным запросам, которые не происходят с их сайта... поэтому руководство по решению будет отличаться:-)