silverlight 获取服务器上图片出现异常 “AG_E_NETWORK_ERROR”
前言
之前项目一直是发布在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”的更多相关文章
- asp.net mvc4 简单的服务器监控开发之C#获取服务器CPU、RAM、TCP等系统信息(上)
一.背景 前段时间服务器出了点问题,加上学业愈来愈紧张,写博文分享的时间越来越少.虽然不是第一次在博客园上写经验,但是近期分享的博文得到了不少的朋友支持和指正,在这里内心非常感激和开心.希望以后能认真 ...
- php获取服务器时间的代码
php获取服务器时间的代码. 用php的date函数即可来获取服务器上的时间: <?php //将时区设置为中国 date_default_timezone_set("PRC&quo ...
- 关于同步VSS服务器上的代码发生Eclipse里面的项目全部不见了
有次在同步VSS服务器上的代码的时候突然发生了错误(同步的代码的项目竟然消失了)....如下图 Could not open the editor: The file does not exist. ...
- Silverlight从客户端上传文件到服务器
这里介绍的是一种利用WebClient手动发送Stream到服务器页面的上传文件方法. 一.服务器接收文件 这里使用一个ASHX页面来接收和保存Silverlight传来的Stream,页面代码如下: ...
- 关于wcf异常异常信息:由于内部错误,服务器无法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribut
异常信息:由于内部错误,服务器无法处理该请求.有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribut ...
- SNF开发平台WinForm之十三-单独从服务器上获取PDF文件进行显示-SNF快速开发平台3.3-Spring.Net.Framework
1运行效果: 2开发实现: 如果需要单独显示PDF文件时用下面代码去实现,指定url地址. 地址: . 获取附件管理的实体对象: List<KeyValuePair<string, obj ...
- 【JSP】让HTML和JSP页面不缓存从Web服务器上重新获取页面
用户退出后,如果点击浏览器上的后退按钮,Web应用将不能正确保护受保护的页面——在Session销毁后(用户退出)受保护的JSP页重新在浏览器中显示出来. 然而,如果用户点击返回页面上的任何链接,We ...
- Java从服务器上获取时间,动态在jsp页面显示
Java获取服务器时间,动态显示到jsp页面,大家都是到Java只能获取一次,到页面的时间是静态的,不过通过js和Java的合作,巧妙地实现此功能 本人是给电视做系统,客户要求页面能显示时间,因为电视 ...
- 项目部署到服务器上之后request.getRemoteAddr()为什么获取的都是本地地址
获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了.如 ...
随机推荐
- 用实例揭示notify()和notifyAll()的本质区别
用实例揭示notify()和notifyAll()的本质区别 收藏 notify()和notifyAll()都是Object对象用于通知处在等待该对象的线程的方法.两者的最大区别在于: notif ...
- java enum类
1.可以在enum中添加变量和方法 先来看一段代码示例: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ...
- [Unity3D][转] 关于Assets资源目录结构管理
分享个我们项目常用的目录结构,微调过很多次,最终到了这个版本.个人认为这种管理资源方式是不错的.欢迎探讨各个细节~ 更新于2013.5.30 Asserts --Editor 自写的灵活方便插 ...
- Redis-cluster集群【第一篇】:redis安装及redis数据类型
Redis介绍: 一.介绍 redis 是一个开源的.使用C语言编写的.支持网络交互的.可以基于内存也可以持久化的Key-Value数据库. redis的源码非常简单,只要有时间看看谭浩强的C语言,在 ...
- 使用cachemanager做缓存(Session的缓存)
1.我在这里直接用 cachemanager.redis 往redis里面存储缓存数据2.步骤 1)下载CacheManager.Redis(包含了CacheManager.Core) 下载Stack ...
- 通过Canvas及File API缩放并上传图片完整示例
<!DOCTYPE html> <html> <head> <title>通过Canvas及File API缩放并上传图片</title> ...
- 免费的HTML5连载来了《HTML5网页开发实例详解》连载(二)
最近新浪.百度.腾讯.京东.大众点评.淘宝等流行的网站都加大了招聘HTML5的力度,HTML5开发人员成了抢手货,本次连载的是由大众点评前端工程师和一淘网前端工程师基情奉献的<HTML5网页开发 ...
- Magic Number(Levenshtein distance算法)
Magic Number Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit ...
- 【转】phpcms基础内容
<?php 思路: 一.目前在企业中使用比较多的cms内容管理有如下几种: 1.dedecms 2.phpcms 二.我们选择学习v9版本的phpcms,主要有以下几点原因: 1.基于MVC模式 ...
- [Unity3d][NGUI]打包NGUI预制件成Assetbundle 两种思路.
http://www.58player.com/blog-2537-85030.html 接上文,项目中因为需要UI热更新,所以我使用了AssetBundle这个解决方案. ...