Silverlight 跨域策略未生效
我创建了一个ClientAccessPolicy.xml,如下所示:Silverlight 跨域策略未生效,silverlight,web-services,configuration,cross-domain,Silverlight,Web Services,Configuration,Cross Domain,我创建了一个ClientAccessPolicy.xml,如下所示: <?xml version="1.0" encoding="utf-8"?> <access-policy> <cross-domain-access> <policy> <allow-from> <domain uri="*"/> </allow-from> <grant-
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from>
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
并将其放入C:\Inetpub\wwwroot\wss\VirtualDirectories\intranet-80中,然后运行iisreset。尽管如此,当我通过Silverlight访问Web服务时,我还是会收到一个CommunicationException,说没有一个正确的跨域策略。我还需要做什么才能访问我的Web服务?我无法从其他主机访问它,也无法从生成的文件E:\Development\MySLProject\MySLProject\bin\Debug\Default.html访问它
干杯
Nik您必须将此文件放入服务器根目录,而不是虚拟目录根目录。过去,我对clientaccesspolicy.xml文件也有类似问题,我对该文件所做的任何操作都不会使我的Silverlight应用程序接受它并继续调用web服务。我正在使用以确保Silverlight请求了该文件,并正确返回了该文件
最后,出于绝望,我删除了clientaccesspolicy.xml文件,并尝试了另一个crossdomain.xml文件,该文件旨在让Silverlight与Flash目标网站一起工作,并且可以直接工作。在Silverlight中:在servicerences.ClientConfig文件中使用相对路径
<client>
<endpoint address="../Service1.svc"
最佳解决方案是>>查找站点的根物理路径>>将文件“ClientAccessPolicy.xml”复制到其中>>现在尝试访问。告诉您如何解决此问题比告诉您必须将文件放在何处更容易:
- 步骤1:安装并启动
- 步骤2:打开silverlight客户端
- 步骤3:在Fiddler中观察您的客户机在哪里请求clientAccessPolicy.xml(这是一个简单的http GET请求,比如下载图像或其他内容)
- 步骤4:将clientAccessPolicy文件放在正确的位置(通过直接使用浏览器下载进行测试)
我打赌你会在不到10分钟的时间内解决这个问题(在那里,完成了:-)解决这个问题花了4个小时。最初,我将“clientaccesspolicy.xml”和跨域放入web服务根目录中。一旦我将这些文件放入服务器根目录C:\Inetpub\wwwroot“我的应用程序已经开始工作。你好,Tucod,非常感谢你的回答。我有点困惑,这是网站实例的根,配置是关于该实例的。我在哪里可以找到服务器根,我应该如何修改我的跨域策略以只与所需的网站(即intranet-80)匹配?干杯-Nik如果您的web应用程序在服务器根目录下运行,那么它可能类似于c:\inetpub\wwwroot\n您提到的测试URL,因此您也应该能够加载-如果这两个链接都在web浏览器中工作,那么它们应该在Silverlight中工作。