Silverlight下跨域访问WCF,解决错误: Unhandled Error in Silverlight Application 操作过程中出现异常,结果无效。异常
来源:互联网 发布:smtp 端口 是多少 编辑:程序博客网 时间:2024/04/30 14:36
第一步,在webconfig里面
1、
<behaviors>
<endpointBehaviors>
<behavior name="CrossDomainServiceBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
2、
<services>
<service name="XCenter.Framework.Private.Impl.CrossDomainServiceImpl">
<host>
<baseAddresses>
<add baseAddress="http://192.168.1.160:8003/" />
</baseAddresses>
</host>
<endpoint address="" binding="webHttpBinding" contract=
"XCenter.Framework.Public.Service.ICrossDomainService"
behaviorConfiguration="CrossDomainServiceBehavior"/>
</service>
</services>
第二步,在加入上述节点之后,在
网站根目录下,加入文件clientaccesspolicy.xml
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from>
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
参考以下文章,(貌似上面第一步使用用于winform访问wcf的,web下只用第二步可以了)。
以下是参考文章, 另 参考 http://www.cnblogs.com/amar-yao/archive/2009/05/20/1463835.html
本文是自已在学习silverlight当中遇到的问题及解决方法,记录下来,便于存档。也希望为遇到相同问题的Coder们, 提供一个解决方案的参考。
一:Silverlight 跨域
Silverlight在设计的时候对网络安全方面做了很多考虑,具体可以看Silverlight SDK。
跨域通信 Web 服务,可以在该域中启用基于 Silverlight 的应用程序要调用的 Web 服务。Silverlight 支持两种类型的跨域策略文件。
· Silverlight 跨域策略 (clientaccesspolicy.xml)
· Flash 跨域策略 (crossdomain.xml) 的子集
使用跨域策略文件的跨域通信
通常,如果基于 Silverlight 的应用程序检测到其请求是一个跨域请求,将首先在 Web 服务的应用程序根处查找 Silverlight 跨域策略文件 (clientaccesspolicy.xml)。如果这个请求导致"404 未找到"或其他错误,应用程序将在应用程序根处查找 Flash 跨域策略文件 (crossdomain.xml)。不允许重定向跨域策略文件。此外,跨域策略文件保持对应用程序会话有效。
现在知道了只要在网站中部署一个跨域策略文件,就可以解决Silverlight跨域请求问题。跨域策略文件要放在哪里?
注意:跨域策略文件必须也只能放在网站的放置在根目录下。
clientaccesspolicy.xml配置:
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from>
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
crossdomain.xml配置:
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
二:Silverlight 在IIS 部署
用silverlight开发的程序,部署到IIS 上,会经常弹出“Sys.InvalidOperationException: InitializeError error #2104 in control 'Xaml1': 无法下载 Silverlight 应用程序。请查看 Web 服务器设置”异常。
出现该异常的原因:silverlight 程序ClientBin目录下的xap 和xaml 为后缀名的文件不被IIS请求识别。
解决方法: 在IIS中,添加MIME类型。
MIME 类型
.xaml application/xaml+xml
.xap application/x-silverlight-app如仍有问题,请检查IE的配置,放开安全里面的Xaml Active 下载等选项。
在IIS添加MIME类型,如图所示:
三:Silverlight 动态绑定图片
用Image标签动态绑定异步请求数据时,在每次页面重新加载时,都会出现“Sys.InvalidOperationException: ImageError error #4001 in control 'Xaml1': AG_E_NETWORK_ERROR” 异常。
Image标签绑定形式如下:
<Image x:Name="rect" Stretch="Fill" Canvas.Left="150" Canvas.Top="130" Source="{Binding ProductImage}" </Image>
该异常原因:绑定发生在设置DataContext之前,所以Image路径还没有设置成你期望的值,就进行绑定,所以此时Image标签的source 路径是不可用的。
修改方法码如下:
在xaml中去掉 Source="{Binding ProductImage}",DataContext绑定数据后,再对Image标签设置绑定值。例如:
<Image x:Name="rect" Stretch="Fill" Canvas.Left="150" Canvas.Top="130" </Image>
1 private void ResponseReady(IAsyncResult asyncResult)
2 {
3 WebRequest request = asyncResult.AsyncState as WebRequest;
4 WebResponse response = request.EndGetResponse(asyncResult);
5 using (Stream responseStream = response.GetResponseStream())
6 {
7 DataContractJsonSerializer jsonSerializer =
8 new DataContractJsonSerializer(typeof(ProductList));
9
10 ProductList productList = jsonSerializer.ReadObject(responseStream) as ProductList;
11 new Thread(() =>
12 {
13 mygrid.Dispatcher.BeginInvoke(
14 () =>
15 {
16 mygrid.DataContext = productList.Products[0];
17 Binding binding = new Binding("ProductImage");
18 rect.SetBinding(Image.SourceProperty, binding);
19 }
20 ); }).Start();
21 }
22 }
23
- Silverlight下跨域访问WCF,解决错误: Unhandled Error in Silverlight Application 操作过程中出现异常,结果无效。异常
- Silverlight+IIS7.5+WCF Unhandled Error in Silverlight Application Load operation failed for query
- Message: Unhandled Error in Silverlight Application
- silverlight wcf 异常处理
- Silverlight处理WCF异常
- Silverlight学习笔记[1] - unhandled error in silverlight application 未将对象引用设置
- silverlight中“跨线程访问无效”错误
- Silverlight访问wcf跨线程访问无效
- Unhandled Error in Silverlight Application, code 2103 when changing the namespace
- silverlight 访问 WCF 出现安全性错误的解决办法
- 在IIS部署Silverlight应用和WCF RIA Services,出现异常:系统找不到指定的文件
- silverlight+wcf 错误
- Silverlight 如何获取有意义的WCF异常信息
- Silverlight 调用自托管的wcf 报跨域异常的处理
- Silverlight中引用wcf出现“给定关键字不在字典中”的错误
- Silverlight 3 动态访问 wcf
- WCF+Silverlight 数据库访问【综述】
- 解决 关于Silverlight使用WCF时抛出异常 Could not find default endpoint element that references contract...
- WS2008+DDK+DDKWizard,Win2003配置方案
- SQL登陆用户操作
- EJB Transaction部分
- brew背景变暗的方法
- Resource.h文件的宏定義
- Silverlight下跨域访问WCF,解决错误: Unhandled Error in Silverlight Application 操作过程中出现异常,结果无效。异常
- sql with 子查询
- sql 子串处理
- Boyer-Moore算法学习(转)
- 咖啡创意用尽了—50个包含咖啡的创意LOGO设计
- 读取android手机流量信息
- 关于JavaScript键盘事件
- 完美程序员的10种品质
- 样本数与进化论