因为Silverlight是Web客户端技术,所以它运行于浏览器的安全沙箱(Sand Box)里,并在访问策略上有所限制。限制的其中之一就是跨域访问。除非某个服务设置成允许跨域调用,否则如果你的应用程序与想要调用的服务处于不同的域名,你是没有办法访问它的。设置这个的途径通常是通过跨域策略文件。Silverlight与其它富客户端插件一样,都要遵循这种策略。
如果我们的Silverlight应用程序所要访问的服务没有设置跨域访问策略的话,那么它是不能对该服务进行访问的。
对服务进行启用允许跨域访问,则需要创建一个名为clientaccesspolicy.xml的文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*" >
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*" >
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
将该文件放到服务所在的wwwroot跟目录下。
注意:文件位置一定要正确,将其放在服务所在的应用程序目录下是不行的。
浙公网安备 33010602011771号