跨域政策未生效

时间:2009-03-09 12:04:03

标签: 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-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,表示没有正确的跨域策略。我还需要做些什么才能访问我的网络服务?我无法从其他主机访问它,我无法从生成的文件E:\ Development \ MySLProject \ MySLProject \ bin \ Debug \ Default.html?

访问它

干杯

的Nik

6 个答案:

答案 0 :(得分:5)

告诉你如何更容易解决这个问题,而不是告诉你 你必须把文件放到哪里

  • 第1步:安装并启动Fiddler
  • 第2步:打开您的silverlight客户端
  • 第3步:在Fiddler中观察客户端请求clientAccessPolicy.xml(这是一个简单的http GET请求,如下载图像或其他任何内容)
  • 第4步:将您的clientAccessPolicy文件放在正确的位置(通过浏览器直接下载测试)

我打赌你会在不到10分钟内解决问题(去过那里,做到了:-))

答案 1 :(得分:3)

您必须将此文件放在服务器根目录中,而不是放在虚拟目录根目录中。

答案 2 :(得分:1)

过去我遇到过clientaccesspolicy.xml文件的类似问题,我对该文件所做的任何操作都不会让我的Silverlight应用程序接受它并继续调用Web服务。我正在使用ProxyTrace来确保Silverlight请求该文件并正确返回它。

最终,出于绝望,我删除了clientaccesspolicy.xml文件并尝试了替代的crossdomain.xml文件,该文件旨在让Silverlight与Flash目标网站一起使用,并立即起作用。

答案 3 :(得分:1)

在Silverlight中:使用ServiceReferences.ClientConfig文件中的相对路径

<client>
<endpoint address="../Service1.svc"
祝你好运

答案 4 :(得分:1)

解决问题需要4个小时。最初我将“clientaccesspolicy.xml”和crossdomain放入Web服务根目录。一旦我将这些文件放入服务器根目录C:\ Inetpub \ wwwroot“我的应用程序已经开始工作。

答案 5 :(得分:0)

最佳解决方案是&gt;&gt;找到您网站的根物理路径&gt;&gt;将文件“ClientAccessPolicy.xml”复制到其中&gt;&gt;现在尝试访问。