WCF与SilverLight Web不在同一站点时部署域访问策略xml文件的注意事项

如果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则报错。。。

原文地址:https://www.cnblogs.com/chriskwok/p/2184766.html