我正在学习使用WCF构建Silverlight 3应用程序以与后端进行通信。我们将在Server2008或Vista上部署到IIS7。客户端二进制文件以及Web服务二进制文件都位于同一IIS Web目录中。当我点击服务首页(http://localhost/MyService.svc)时,它返回就好了。当我点击应用程序(http://localhost/index.html)时,我得到了我的Silverlight应用程序。静态材质渲染得很好,但是我试图用CrossDomainError填充返回的两个字段。根据我的理解,当您从其他域上托管的页面访问服务时会发生这种情况。我不相信我这样做,除非在不知不觉中。
异常消息是:
[CrossDomainError] 参数:http://localhost:2721/Service1.svc 调试资源字符串不可用。通常,密钥和参数提供了足够的信息来诊断问题。看[我在这里不会重现的一些可怕的网址,因为它无论如何都是无用的]
我打开了端口2721,无论是入站还是出站都没有效果。
有什么想法吗?
答案 0 :(得分:2)
对于两个被认为具有相同来源的文档,一切都必须完全相同:协议(http / https),域和端口。
因此,如果您打开http://localhost并尝试向http://localhost:2721发出请求,则会收到该错误。
答案 1 :(得分:1)
您需要在网站的根目录中使用crossdomain.xml和/或clientaccesspolicy.xml(闪存兼容性需要crossdoomain.xml,两者都适用于silverlight)。这个xml需要包含以下内容:
<?xml version="1.0" encoding="utf-8" ?>
<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>