我正在尝试从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>
答案 0 :(得分:2)
这是silverlight的重要来源+ wcf info:
http://www.netfxharmonics.com/2008/11/Understanding-WCF-Services-in-Silverlight-2
答案 1 :(得分:2)
您需要一个针对https的单独域节点:
<domain uri="https://*" />
从这篇文章:
答案 2 :(得分:1)
如果服务和silverlight应用程序是从同一网站提供的,并且您使用的是Silverlight 4,则可以通过以下方式在没有跨域策略文件的情况下完成此操作:
以下是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)