Silverlight使用HttpWebRequest和HttpWebResponse时发生System.Security.SecurityException: 安全性错误

91 篇文章 1 订阅

最近项目需要,研究Silverlight 从阿里云下载数据,遇到一些问题:

1   slilverlight 调用webservice

2   sliverlight 下载数据提示安全性错误

对于这两个问题解决的方法如下:

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跨域的问题有很好的解决方式

这里介绍需要注意的地方

Silverlight很容提示跨域错误,如图

实现跨域需要在你的*.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>



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值