用VS2010开发slirverlight 调用WCF服务
今天研究了一上午加下午好几个小时,终于把这个问题解决了。
问题是用VS2010写得Sirverlight调用WCF 会出现跨域的问题,相信这个问题大家都会遇到过,解决办法很简单,只要在WCF项目根目录加入1个配置文件即可
内容如下:
clientaccesspolicy.xml
//要记得名字为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>
<?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>
这个问题很好解决
而我当初遇到的问题却不是这个,
在公网上有一个WCF服务,这个服务是公共的,大家都可以调用的,而且服务不是我写的,我怎么能去人家那里的根目录添加这个配置文件呢?如果遇到这种情况我这里还有一个解决方案,虽然不知道是不是最佳的,但是保证可以实现需求。
如果想用SL调用一个公网的WCF,这时候要在本地建一个WCF服务,这个WCF服务的作用是来给你的SL项目和WCF项目做桥梁的,在这里我不太明白的地方,(为什么本地WCF服务可以访问外网的WCF服务,而本地的SL项目访问外网WCF服务就会有跨域的问题,希望各位强人可以给予答案 。),继续向下说,想必大家才出来了,我要用我本地的WCF服务访问公网的WCF服务,然后在用本地的SL项目来访问本地的WCF服务,这样就可以同样取得公网WCF服务的数据了