最近项目需要,研究Silverlight 从阿里云下载数据,遇到一些问题:
1 slilverlight 调用webservice
1 由于Silverlight的特性,调用webservice时,只能通过异步的方式访问,在实际项目中,很多同步访问,这就需要用到域服务类来实现(DomainService),关于具体DomainService具体介绍请访问http://www.cnblogs.com/lincats/archive/2011/07/05/2098155.html,该博客详细讲解了原理,这里就不多介绍。主要讲解如何使用:
1.1) 在SilverlightApplication1.Web项目中,添加DomainService类
1.2 ) 在SilverlightApplication1中添加对DomainService1的链接,点击SilverlightApplication1项目属性,默认silverlight选项卡,在WCF Ria 链接服务中选择SilverlightApplication1.Web
如图
1.3 ) 在silverlight使用wcf ria服务链接
SilverlightApplication1.Web.DomainService1 domain = new Web.DomainService1(); domain.GetDownloadUrl(182,75905,new Action<System.ServiceModel.domainservices.Client.InvokeOperation<List<URLRes>>>(test),null);
2 安全性解决方案:主要是silverlight安全限制造成的。通过配置访问文件可以解决,博客Silerlight调用WCF、Web Service、Wcf Ria Service跨域的问题有很好的解决方式
这里介绍需要注意的地方
实现跨域需要在你的*.Web服务端的根目录下放上两个文件clientaccesspolicy.xml 和crossdomain.xml
.web服务端的根目录很重要,本人在相中正确配置了访问文件,却因为放错位置而一直通不过安全检测。
在SilverlightApplication1.Web中选择clientaccesspolicy.xml 和crossdomain.xml文件,右击属性->输出到目录->选择始终复制
只需要在你的*.Web服务端的根目录下放上两个文件clientaccesspolicy.xml 和crossdomain.xml
(1)clientaccesspolicy.xml 以配置服务允许跨域访问
<?xml version="1.0" encoding="utf-8"?> <access-policy> <cross-domain-access> <policy> <allow-from http-request-headers="*"> <domain uri="*"/> </allow-from> <!--只允许从其他域中的一个访问,如http://contoso.com <allow-from http-request-headers="*"> <domain uri="http://contoso.com"/> </allow-from> --> <!--允许访问 HTTPS 服务 <allow-from http-request-headers="*"> <domain uri=”http://*”/> </allow-from> --> <grant-to> <resource path="/" include-subpaths="true"/> </grant-to> </policy> </cross-domain-access> </access-policy>
(2) crossdomain.xml 该文件必须将整个域标记为 public
<?xml version="1.0" ?> <cross-domain-policy> <allow-access-from domain="*" /> </cross-domain-policy>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。