从silverlight调用https wcf服务

时间:2009-05-12 18:21:23

标签: wcf silverlight https silverlight-2.0

我正在尝试从silverlight访问https wcf服务。 clientaccesspolicy放在服务root上,我通过silverlightspy验证它显示为有效并允许调用。 我能够从桌面客户端成功调用该web服务,但是当尝试从silverlight调用它时会抛出一个错误,调用....服务失败可能是跨域poliecy等无效.... 有任何想法吗???? 这里也是服务跨域策略:

    <?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 include-subpaths="true" path="/" />
      </grant-to>  
  </policy>
  </cross-domain-access>
</access-policy>

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

您需要一个针对https的单独域节点:

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

从这篇文章:

http://timheuer.com/blog/archive/2008/10/14/calling-secure-services-with-silverlight-2-ssl-https.aspx

答案 2 :(得分:1)

如果服务和silverlight应用程序是从同一网站提供的,并且您使用的是Silverlight 4,则可以通过以下方式在没有跨域策略文件的情况下完成此操作:

  • 通过https访问silverlight应用程序
  • 使用ServiceReferences.ClientConfig文件中的相对地址访问服务
  • 在服务的BasicHttpBinding中使用传输模式安全性。

以下是ServiceReferences.ClientConfig的一个示例:

<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IMyService" maxBufferSize="2147483647"
                    maxReceivedMessageSize="2147483647">
                  <!--Transport mode security (setup the same way on the server):-->
                    <security mode="Transport" />
                </binding>
            </basicHttpBinding>
        </bindings>
        <client>
          <!--Relative address (This is the part that requires SL4):-->
            <endpoint address="../Services/MyService.svc"
                binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMyService"
                contract="MyApplication.MyService" name="BasicHttpBinding_IMyService" />
        </client>
    </system.serviceModel>
</configuration>

答案 3 :(得分:0)

你看过这里吗?

Calling WCF Service from Silverlight