基于SSL的Silverlight 3 / WCF通信问题

时间:2010-09-01 00:22:42

标签: c# wcf .net-3.5 ssl silverlight-3.0

我有一个WCF over SSL服务没有问题。我可以在Silverlight项目中添加对此服务的引用。一切都在IIS7中托管。当我的应用程序运行时,我收到以下错误

  

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

现在我已经在这里呆了好几个小时了 1)是的我在正确的位置添加了clientaccesspolicy并且设置正确。我使用了Fiddler并确认该政策正在被撤销。 2)我尝试过使用跨域策略以及相同的结果。 3)WCF服务本身工作,我可以使用WCFTestClient连接到它并提取我想要的数据。

此时的任何建议都将不胜感激。如果您需要任何其他信息,请告诉我。

2 个答案:

答案 0 :(得分:1)

我终于能够解决这个问题了。问题出在客户端访问策略中。我把政策放在了错误的位置。

<?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>

一些注释

  1. 我设置了Visual Studio 2010,以便为服务和Silverlight UI使用本地IIS Web服务器。我仍然收到一个客户端访问策略无法访问的警告,但此时似乎所有事情都在工作。

答案 1 :(得分:0)

我怀疑您有一个跨模式网址方案,其中您的Silverlight应用程序是http并且正在尝试通过https访问资源,而这在您的clientaccesspolicy中未启用。是否在clientaccesspolicy文件中启用了http-to-https跨模式访问?有关详细信息,请查看msdn上的URL Access Restrictions in Silverlight