我们有
的WCF RIA域名服务[EnableClientAccess(RequiresSecureEndpoint = true)]
我们将网站设置为使用http和https。我们在网站的根目录中有一个客户端访问策略文件,如下所示:
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="http://*"/>
<domain uri="https://*"/>
</allow-from>
<grant-to>
<resource include-subpaths="true" path="/"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
当我们通过https访问Silverlight应用程序时,一切都很好。当我们通过http访问它时,我们收到以下错误:
调用操作'工作'失败。尝试向URI“https://localhost/ClientBin/SilverlightApplication3-Web-DomainService1.svc/binary/Working”发出请求时发生错误。这可能是由于尝试在没有适当的跨域策略的情况下以跨域方式访问服务,或者是不适合SOAP服务的策略。您可能需要联系服务的所有者以发布跨域策略文件,并确保它允许发送与SOAP相关的HTTP标头。在不使用InternalsVisibleToAttribute属性的情况下,在Web服务代理中使用内部类型也可能导致此错误。有关更多详细信息,请参阅内部异常。
这意味着我们的政策文件不正确,但无法看清楚。有什么想法吗?
答案 0 :(得分:1)
它无效的原因是我们使用的是自签名证书,使用机器名生成,然后在URL上使用localhost。 url必须匹配以确保ssl没有证书错误。
检查此问题的一个好方法是通过https运行整个网站,并确保浏览器不会出现证书错误。