前言

之前项目一直是发布在IIS上面使用HTTP访问,现在要求改为HTTPS,通过在IIS生成自签名后,打开HTTPS通道,可以将原来的程序已HTTPS的方式发布出来。 可参见

http://blogs.msdn.com/b/webapps/archive/2013/01/24/configure-a-wcf-service-with-ssl-and-consume-from-silverlight-via-https-including-cross-domain-scenario.aspx

-----

回到正题,在部署完毕之后,通过在服务器打开浏览器访问本地图片(图片已imageserive形式发布,例如:http://192.168.1.100\shareimage\img1.png), 可以正常访问。但是如果在另一台机器上(同网段的不同机器)上使用浏览器访问,在打开页面后出现无法读取图片的现象。。。

首先,我通过debug发现在注册的Image.ImageFailed(object sender, ExceptionRoutedEventArgs e)事件中可以发现“AG_E_NETWORK_ERROR”异常,按照这个关键字

在网上搜索了一下,真的是众说纷纭。。 我起初感觉是夸URI访问权限问题,所以先尝试了添加跨域访问文件“ClientAccessPolicy.xml”, 重启IIS,未见任何效果。 但是如果我直接把Image uri 放到浏览器中的话,是显示正常的,并且在Browser中用HTTP地址方式打开网页也能显示图片。。。这个问题令我百思不得其解。。。

第二天,继续努力,终于在微软论坛上找到了答案,个人猜测是之前用的 BitmapImage 加载图片是的方式可能不适合跨URI访问资源(Browser的地址是HTTS, 但是访问资源实在HTTP)这里还是没有完全明白其中缘由,但是问题总算解决了。

原先加载图片的代码:

var img = new Image() ;
var bi = new BitmapImage(); bi.UriSource = new Uri("http://169.15.16.83/img/13540001507152531.png", UriKind.Absolute);
bi.ImageFailed += (object sender, ExceptionRoutedEventArgs ea) =>
{
 // error!
// ea.ErrorException
}; img.Source = bi;

修改后的代码(通过WebClient下载图片后绑定数据):

var img = new Image();
WebClient downloadImage = new WebClient();
Uri imgUri = new Uri("http://169.15.16.83/img/13540001507152531.png");

downloadImage.OpenReadCompleted += (sender, e) =>
{
  if (e.Result.Length > 0)
  {
    BitmapImage image = new BitmapImage();
    image.SetSource(e.Result);
    img.ImageSource = image;
  }
};
downloadImage.OpenReadAsync(imgUri);

到此为止,虽然问题解决,但是还是不太明白之中的区别,还请各位不吝赐教。。。

另附上微软社区帖子地址,方便大家查看:https://social.msdn.microsoft.com/Forums/zh-CN/95b21533-bc82-4b6a-8f1e-4b2d0a3d890c/bitmapimageagenetworkerror?forum=windowsphonezhchs
  

silverlight 获取服务器上图片出现异常 “AG_E_NETWORK_ERROR”的更多相关文章

  1. asp.net mvc4 简单的服务器监控开发之C#获取服务器CPU、RAM、TCP等系统信息(上)

    一.背景 前段时间服务器出了点问题,加上学业愈来愈紧张,写博文分享的时间越来越少.虽然不是第一次在博客园上写经验,但是近期分享的博文得到了不少的朋友支持和指正,在这里内心非常感激和开心.希望以后能认真 ...

  2. php获取服务器时间的代码

    php获取服务器时间的代码. 用php的date函数即可来获取服务器上的时间:  <?php //将时区设置为中国 date_default_timezone_set("PRC&quo ...

  3. 关于同步VSS服务器上的代码发生Eclipse里面的项目全部不见了

    有次在同步VSS服务器上的代码的时候突然发生了错误(同步的代码的项目竟然消失了)....如下图 Could not open the editor: The file does not exist. ...

  4. Silverlight从客户端上传文件到服务器

    这里介绍的是一种利用WebClient手动发送Stream到服务器页面的上传文件方法. 一.服务器接收文件 这里使用一个ASHX页面来接收和保存Silverlight传来的Stream,页面代码如下: ...

  5. 关于wcf异常异常信息:由于内部错误,服务器无法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribut

    异常信息:由于内部错误,服务器无法处理该请求.有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribut ...

  6. SNF开发平台WinForm之十三-单独从服务器上获取PDF文件进行显示-SNF快速开发平台3.3-Spring.Net.Framework

    1运行效果: 2开发实现: 如果需要单独显示PDF文件时用下面代码去实现,指定url地址. 地址: . 获取附件管理的实体对象: List<KeyValuePair<string, obj ...

  7. 【JSP】让HTML和JSP页面不缓存从Web服务器上重新获取页面

    用户退出后,如果点击浏览器上的后退按钮,Web应用将不能正确保护受保护的页面——在Session销毁后(用户退出)受保护的JSP页重新在浏览器中显示出来. 然而,如果用户点击返回页面上的任何链接,We ...

  8. Java从服务器上获取时间,动态在jsp页面显示

    Java获取服务器时间,动态显示到jsp页面,大家都是到Java只能获取一次,到页面的时间是静态的,不过通过js和Java的合作,巧妙地实现此功能 本人是给电视做系统,客户要求页面能显示时间,因为电视 ...

  9. 项目部署到服务器上之后request.getRemoteAddr()为什么获取的都是本地地址

    获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了.如 ...

随机推荐

  1. How to save milliseconds to DB in NHibernate

    We need to configure Timestamp in Mapping. eg. Map(x => x.ResponseDate).CustomType("Timestam ...

  2. Autofac和DynamicProxy2搭配实现Aop动手训练

    http://www.cnblogs.com/zhengwl/p/5433181.html Aop含义:aspect-oriented programming 实现工具介绍 Autofac是一个比较流 ...

  3. java 正则 二次转义

    JAVA中的正则表达式"\\[([^\\]]+)\\]"这个表示什么意思?两个转义字符是为了表达什么? 正则表达式中"["这样的字符有特殊的意义,所以需要写成& ...

  4. xss利用和检测平台

    xssing 是安全研究者Yaseng发起的一个基于 php+mysql的 网站 xss 利用与检测开源项目,可以对你的产品进行黑盒xss安全测试,可以兼容获取各种浏览器客户端的网站url,cooki ...

  5. Python之路【第十一篇续】前端之CSS补充

    CSS续 1.标签选择器 为类型标签设置样式例如:<div>.<a>.等标签设置一个样式,代码如下: <style> /*标签选择器,如果启用标签选择器所有指定的标 ...

  6. nginx禁止ip直接访问

    编辑一个noIp.conf放到虚拟目录中 server { listen default; server_name _; rewrite ^ http://www.xxxx.com/; } 其中 ww ...

  7. document.all的详细解释(document.all基本上所有浏览器可用!)

    从何而来从IE4开始IE的object model才增加了document.all对象,MSDN中也对 Object.all 有详细的说明,Object.all是个HTMLCollection,不是数 ...

  8. bzoj1179 [Apio2009]Atm

    Description Input 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i条道路的起点和终点的路口 ...

  9. php连接mysql

    一.php连接mysql的函数 1.mysql_connect 作用:连接mysql eg:$con=mysql_connect('localhost','root','123456'); 2.mys ...

  10. hdu.1010.Tempter of the Bone(dfs+奇偶剪枝)

    Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...