Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight 跨域策略未生效_Silverlight_Web Services_Configuration_Cross Domain - Fatal编程技术网

Silverlight 跨域策略未生效

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-

我创建了一个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,说没有一个正确的跨域策略。我还需要做什么才能访问我的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中工作。