教程首页 平面设计 网页设计 编程教程 数据库 cms教程 站长教程 电脑教程 办公软件 服务器 网络通讯 电脑硬件

Silverlight 跨域 解决办法

Silverlight跨域,Silverlight在IIS中部署等问题解决之道

本文是自已在学习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]代码

 <?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]代码

<?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="{BindingProductImage}" </Image>

该异常原因:绑定发生在设置DataContext之前,所以Image路径还没有设置成你期望的值,就进行绑定,所以此时Image标签的source 路径是不可用的。修改方法码如下:

在xaml中去掉 Source="{Binding ProductImage}",DataContext绑定数据后,再对Image标签设置绑定值。例如:

<Image x:Name="rect" Stretch="Fill"  Canvas.Left="150" Canvas.Top="130" </Image>

[xml]代码

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 跨域 iis

最新-教程
利用photoshop画笔工具给黑白相片上色
(function(){})()等函数的详细解释
利用minify工具合并css和js文件
PHP伪造referer地址的三种方法
帝国CMS标签tags出现空标签的情况解决办法
由于权限不足而无法读取配置文件出现的HTTP 500.19解决办法
iis7.5 http 错误 500.19- Internal Server Error 错误解决方法
iis7.5 http 500.19 错误代码 0x800700b7 解决办法
javascript构造函数的重载和工厂方法
javascript模块化与命名空间
广告代码优化之-document.write
js检测来源网址,如果是搜索引擎跳转到新地址

素材天下 PSD素材 矢量图素材 图片素材 网页模板 PPT模板 flash素材 设计教程 图标 jquery插件 js代码 酷站欣赏 电脑壁纸 设计欣赏

Copyright © 2009-2013 niutuku.com All Rights Reserved.