今天研究了一上午加下午好几个小时,终于把这个问题解决了。
问题是用VS2010写得Sirverlight调用WCF 会出现跨域的问题,相信这个问题大家都会遇到过,解决办法很简单,只要在WCF项目根目录加入1个配置文件即可
内容如下:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
//要记得名字为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服务的数据了