如果WCF与SilverLight Web不是在同一站点,那么我们就要在被访问端的根域放上两个XML文件clientaccesspolicy.xml,crossdomain.xml
如果要通过WebClinet访问另一站点的资源,那么需要在被访问站点放上域访问策略xml文件,不然在Complete事件里面的事件参数报告空对象引用。
1、文件格式及内容:
clientaccesspolicy.xml文件格式如何,最好将编码设置为utf-8,否则极易出错
<?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文件格式
crossdomain.xml的格式非常简单,其根节点为<cross-domain-policy> ,其下包含一个或多个<allow-access-from>节点,<allow-access-from>有一个属性domain,其值为允许访问的域,可以是确切的 IP 地址、一个确切的域或一个通配符域(任何域)。下边是两个例子:
文件内容
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="http://www.chris.com.cn/" />
<allow-access-from domain="*.chris.com.cn" />
<allow-access-from domain="222.217.221.16" />
</cross-domain-policy>
或者:(允许所有站点)
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
2、部署位置:此两个文件应存放于C:\inetpub\wwwroot路径下。
3、SilverLight Web的default.html文件内容中的WCF服务基地址的localhost改为相应的IP地址(注意localhost则不会访问上述两个文件,而用IP则会访问策略文件,所以即使将Web和WCF都部署在同一台机器,如果你使用IP为基地址也必须部署上述两个策略文件,否则你会发现localhost运行一切正常,而改用本机IP则报错。。。