我有一个ListBox
,其中填充了从JSON响应中读取的项目。每个项目都有一个Image
控件,用于显示Thumbnail
属性给出的远程URL的缩略图。我创建了一个自定义IValueConverter
来将网址转换为BitmapImage
,但图片仍未显示。所以我终于意识到我可以使用ImageFailed
事件捕获加载错误。
我得到的是 AG_E_NETWORK_ERROR 。我查看了Silverlight的URL Access Restrictions,该表说明在没有 crossdomain.xml 文件的情况下允许从其他域加载Image
。
我很肯定网址有效且指向图片,因为我可以直接从JSON复制并粘贴它并在浏览器中查看。然而,Silverlight拒绝加载它。
为什么会这样?
编辑:我安装了Fiddler,它确实显示加载Silverlight页面时发出的请求。但是,这些请求都不适用于图像。似乎Silverlight甚至没有尝试发出请求并自动抛出异常。
答案 0 :(得分:5)
有人在Silverlight论坛上回答了这个问题。结果问题是我使用的是自动生成的调试页面,而不是IIS网站。 Silverlight不允许跨协议调用(在本例中,从file://到http://)。
答案 1 :(得分:1)
您是否真的尝试使用WebClient或Silverlight中的其他HTTP堆栈下载映像(二进制内容)?除非您可以编写该跨域文件,否则这是不可能的。
我相信你必须设置Image.Source的URL,然后让Silverlight解析图像。你也会看到Fiddler当时提出请求。
答案 2 :(得分:0)
另一种方式:
现在你可以运行&调试您的Silverlight应用程序而不安装ISS服务器。