Http托管Silverlight应用程序跨域访问https托管服务

时间:2012-06-13 15:07:14

标签: silverlight http https cross-domain

我正在尝试使用Web客户端调用休息服务(或webRequest.Create,结果相同)。

Silverlight应用程序正在我的机器上使用url localhost:13451

开发

使用https://contoso.com/Services/Service.csv

托管休息服务

以及获取实体列表的方法具有如下定义的url结构:

https://contoso.com/Services/Service.csv/username@password/?StartDate=10-11-2012

https://contoso.com/

可以访问https://contoso.com/crossdomain.xml的crossdomain.xml文件

并包含以下内容:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

因此,当我尝试发出请求时,Silverlight会抛出安全异常而不指定错误。有任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

当您需要向服务添加SL服务引用时,请将其放在您网站的根目录上: clientaccesspolicy.xml

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="*"  http-methods="*" >
        <domain uri="http://*"/>
        <domain uri="https://*"/> 
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

和包含以下内容的crossdomain.xml:

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="SOAPAction">
        <domain uri="*"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

并确保可以通过浏览器访问http或https! HTH