Silverlight访问Window服务为宿主的WCF跨域问题解决方案.
总结一下这两天遇到的问题.当Silverlight访问Window服务为宿主的WCF时, 不能像iis为宿主时在根目录下添加策略文件.此时,可以用.net 3.5中的WCF Rest来解决问题.
说明:
1.假设我们的WCF服务地址为:http://127.0.0.1:2000.那么就应该存在:
2.用WCF REST提供http://127.0.0.1:20000/clientaccesspolicy.xml 地址
////接口:
[OperationContract]
[WebGet(UriTemplate = "clientaccesspolicy.xml", ResponseFormat = WebMessageFormat.Xml)]
Stream GetPolicy();
[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()方法,返回策略文件,可以在策略文件里做权限设置.
点击下载相关代码
当Silverlgiht自动访问http://127.0.0.1:20000/clientaccesspolicy.xml取策略文件时,wcf就会调用GetPolicy()方法,返回策略文件,可以在策略文件里做权限设置.
点击下载相关代码