Silverlight载入图片时的AG_E_NETWORK_ERROR错误

写了一个简单的Silverlight应用来加载第三方网站的图片,图片地址没有任何问题,但却总是不显示。订阅了Image控件的ImageFailed事件之后,在该事件的处理程序中发现了错误名称“AG_E_NETWORK_ERROR”。

AG_E_NETWORK_ERROR表示由于网络原因,无法加载图片。但我在浏览器里输入图片的URL,却可以正常访问。

经过一番艰难的调查,发现其实Silverlight根本没有去请求那张图片,直接就抛出了异常。

又经过一番艰难的调查,终于弄清楚了错误的原因,是因为我所选择的调试方式。调试时,我偷懒选择了“动态生成测试页面”或者使用“Out-of-browser application”的方式,但这两种方式使用的协议是FILE,而不是HTTP,Silverlight限制了FILE协议去访问其他协议的图片。所以还是乖乖地建一个测试网站才解决这个问题。

关于各种协议下跨协议、跨域名或者跨区域的访问限制,可以查看这篇文章:《Silverlight 中的 URL 访问限制》。

2 Comments

  1. Eric

    SL里加载别的网站中的图片时有跨域的问题。。。但如果使用Out-of-browser application,是没问题的。可以使用webclient把图片DOWN下来。。。就可以了。。。

发表评论

电子邮件地址不会被公开。 必填项已用*标注