12

我得到下面的代码,它试图将图像从网络加载到图像控件中,当我运行它时,我在给定的行上得到一个错误,即不允许网络访问:

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;
        }

适用于 Windows Phone 7 的 Silverlight

4

4 回答 4

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);
}
于 2010-03-16T15:16:49.437 回答
3

我看到您正在从Dilbert.com该站点是否有跨域策略文件中检索图像?

于 2010-03-16T14:39:18.237 回答
1

Silverlight 不支持仅 JPG 的 GIF,所以我写道:

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。

于 2010-03-16T15:25:02.283 回答
0

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

于 2010-03-16T14:40:02.603 回答