2024年4月25日发(作者:)
Silverlight跨域,Silverlight在IIS
中部署等问题解决方法
一:Silverlight 跨域
Silverlight在设计的时候对网络安全方面做了很多考虑,具体
可以看Silverlight SDK。
跨域通信是通过在其他域的根部署使用正确跨域策略文件的 Web 服
务,可以在该域中启用基于 Silverlight 的应用程序要调用的 Web 服务。
Silverlight 支持两种类型的跨域策略文件。
Silverlight
跨域策略 ()
Flash
跨域策略 () 的子集
使用跨域策略文件的跨域通信
通常,如果基于 Silverlight 的应用程序检测到其请求是一个跨域请求,
将首先在 Web 服务的应用程序根处查找 Silverlight 跨域策略文件
()。如果这个请求导致"404 未找到"或其他错误,
应用程序将在应用程序根处查找 Flash 跨域策略文件
()。不允许重定向跨域策略文件。此外,跨域策略文件保
持对应用程序会话有效。
现在知道了只要在网站中部署一个跨域策略文件,就可以解决
Silverlight跨域请求问题。跨域策略文件要放在哪里?
注意:跨域策略文件必须也只能放在网站的放置在根目录下。
配置:
include-subpaths="true"/> 配置: 二:Silverlight 在IIS 部署 用silverlight开发的程序,部署到IIS 上,会经常弹出 “dOperationException: 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标签动态绑定异步请求数据时,在每次页面重新加 载时,都会出现“dOperationException: ImageError error #4001 in control 'Xaml1': AG_E_NETWORK_ERROR” 异常。 Image标签绑定形式如下: Stretch="Fill" ="150" ="130" Source="{Binding ProductImage}" 该异常原因:绑定发生在设置DataContext之前,所以Image路径还 没有设置成你期望的值,就进行绑定,所以此时Image标签的source 路 径是不可用的。 修改方法码如下: 在xaml中去掉 Source="{Binding ProductImage}",DataContext绑 定数据后,再对Image标签设置绑定值。例如: Stretch="Fill" ="150" ="130" 1 private void ResponseReady(IAsyncResult asyncResul t) 2 { 3 WebRequest request = tate as WebRequest; 4 WebResponse response = Re sponse(asyncResult); 5 using (Stream responseStream = respons ponseStream()) 6 { 7 DataContractJsonSerializer jsonSeri alizer = 8 new DataContractJsonSerializer (typeof(ProductList)); 9 10 ProductList productList = jsonSeria ject(responseStream) as ProductList; 11 new Thread(() => 12 { 13 nvoke( 14 () => 15 { 16 ntext = pr ts[0]; 17 Binding binding = new B inding("ProductImage"); 18 ding(Image.S ourceProperty, binding); 19 20 21 22 23 } ); }).Start(); } } Tag标签: silverlight
发布评论