我正在尝试使用网络客户端(或 webRequest.Create,结果相同)调用休息服务。
正在使用 url localhost:13451 在我的机器上开发 Silverlight 应用程序
休息服务使用 https://contoso.com/Services/Service.csv 托管
获取实体列表的方法具有定义如下的 url 结构:
https://contoso.com/Services/Service.csv/username@password/?StartDate=10-11-2012
https://contoso.com/ 的 crossdomain.xml 文件可通过 https://contoso.com/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 会抛出一个安全异常,但没有说明问题所在。有什么解决办法吗?
最佳答案
当您需要向服务添加 SL 服务引用时,将其放在您站点的根目录中: 客户端访问策略.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 访问!
关于silverlight - Http 托管 silverlight 应用跨域访问 https 托管服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11017886/