1

我正在尝试使用我创建的使用 HTTPS 的自托管 WCF 服务。我可以使用 WCFClientTest 工具和 Web 浏览器访问该服务,但是我的 silverlight 应用程序无法正常工作。我收到以下错误:

This could be due to to attempting to access a service in a cross-domain way without a proper cross-domain policy in place, or a policy that is unsuitable for SOAP services. You may need to contact the owner of the service to publish a cross-domain policy file and to ensure it allows SOAP-related HTTP headers to be sent.

我确实有clientaccesspolicy.xml,当我通过fiddler查看它时,我可以看到silverlight应用程序正常。xml 文件包含以下内容:

<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>

问题是,即使 silverlight 应用程序似乎正在请求并接收该文件,它仍然会抛出允许跨域访问所需的错误消息。有什么想法吗?

提前致谢。

4

2 回答 2

2

请注意您的应用程序尝试使用 WCF 服务的地址和端口。使用 Fiddler 查看它在哪里调用(我遇到过很多这样的问题,因为 VS 的错误是相同的......它没有找到服务)。

无论如何,这里有一个正在工作的 clientaccesspolicy.xml:

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="SOAPAction">
        <domain uri="http://*"/>
        <domain uri="https://*"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>
于 2012-09-12T15:33:28.460 回答
0

您需要一个单独的域节点用于 https:

<domain uri="https://*" /> 

有关跨域的更多信息,请访问:http: //msdn.microsoft.com/en-us/library/dd470115 (VS.95).aspx和http://blogs.msdn.com/b/carlosfigueira/archive/2008 /03/07/enabling-cross-domain-calls-for-silverlight-apps-on-self-hosted-web-services.aspx

愿此链接有所帮助。

于 2012-09-12T15:22:07.143 回答