Silverlight访问Window服务为宿主的WCF跨域问题解决方案.

总结一下这两天遇到的问题.当Silverlight访问Window服务为宿主的WCF时, 不能像iis为宿主时在根目录下添加策略文件.此时,可以用.net 3.5中的WCF Rest来解决问题.
说明:
1.假设我们的WCF服务地址为:http://127.0.0.1:2000.那么就应该存在:
http://127.0.0.1:20000/clientaccesspolicy.xml 地址提供策略文件.
 
2.用WCF REST提供http://127.0.0.1:20000/clientaccesspolicy.xml 地址
////接口:
[OperationContract]
        [WebGet(UriTemplate 
= "clientaccesspolicy.xml", ResponseFormat = WebMessageFormat.Xml)]
        Stream GetPolicy();
 
取策略文件实现
 
3.在配置文件添加端点:

<endpoint binding="webHttpBinding"  contract="WindowsFormsApplication2.IClientAccessPolicy" address=""  behaviorConfiguration="postbehavior"/>
       
address为空,,使用基础地址.
 
4.完成
当Silverlgiht自动访问http://127.0.0.1:20000/clientaccesspolicy.xml取策略文件时,wcf就会调用GetPolicy()方法,返回策略文件,可以在策略文件里做权限设置.

点击下载相关代码
posted on 2009-07-28 13:13  Hunter.Wei  阅读(720)  评论(0编辑  收藏  举报