我使用的是 VSTS 2008 + C# + WCF + .Net 3.5 + Silverlight 3.0。我在 html 页面中托管 Silverlight 控件并从 VSTS 2008 调试它(按 F5,然后在 VSTS 2008 内置 ASP.Net 开发 Web 服务器中运行),然后调用另一个 WCF 服务(托管在另一台运行 IIS 7.0 + Vista 的机器上) . WCF服务很简单,只需要返回一个常量字符串给客户端。

从 Silverlight 调用 WCF 服务时,我收到以下错误消息,

尝试向 URI“https://LabTest/Test.svc”发出请求时出错。这可能是由于在没有适当的跨域策略的情况下尝试以跨域方式访问服务,或者策略不适合 SOAP 服务。您可能需要联系服务的所有者以发布跨域策略文件并确保它允许发送与 SOAP 相关的 HTTP header 。此错误也可能是由于在 Web 服务代理中使用内部类型而不使用 InternalsVisibleToAttribute 属性造成的。有关更多详细信息,请参阅内部异常。

这是 clientaccesspolicy.xml 文件,有什么问题吗?

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

最佳答案

这可能是在黑暗中拍摄。但我记得遇到过在 vista 和 IIS7 上本地设置 WCF 服务的类似场景。结果我不得不在我的 web.config 文件中更具体地使用 baseAddressPrefixFilters 添加一些行,阅读另一篇文章:Here。我遇到了一个问题,因为我的默认网站有多个主机绑定(bind)。它需要 *:80 和 www.mydomain.com:80 而 WCF 不会喜欢那样。

关于c# - WCF跨域策略安全错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1345454/

10-12 00:11
查看更多