2

我创建了一个如下所示的 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?

干杯

尼克

4

6 回答 6

5

告诉您如何解决此问题比告诉您必须将文件放在哪里更容易:

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

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

于 2010-11-18T16:29:57.123 回答
3

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

于 2009-03-09T16:27:33.800 回答
1

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

<client>
<endpoint address="../Service1.svc"

祝你好运

于 2010-11-08T12:05:39.000 回答
1

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

于 2012-06-06T05:09:07.960 回答
1

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

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

于 2009-03-11T11:18:53.057 回答
0

最好的解决方案是>>找出您站点的根物理路径>>将文件“ClientAccessPolicy.xml”复制到其中>>现在尝试访问。

于 2010-11-18T13:47:47.333 回答