1

我有 silverlight4 应用程序向其他一些网络服务器发出跨域请求,作为论坛 stackoverflow 帖子和 MSDN,silverlight 限制发出跨域请求。但我发现在 silverlight4 和更高版本中,您可以通过 clientaccesspolicy.xml 添加异常来发出这些请求。我添加了以下 xml 作为我的 clientaccesspolicy.xml

<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> 

xml 文件保留在我的应用程序的根目录中。但是在下面一行我仍然抛出了安全异常

HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asyncResult);

任何人都可以阐明我在这里可能缺少的东西。我知道可以在应用程序中托管另一个本地服务并通过它发出请求。但我不想采用那个解决方案。

4

1 回答 1

1

我猜 SL 出于某种原因没有读取 XML。

我建议您启动 Fiddler 并检查 Silverlight 发出的请求及其响应。当访问来自不同域的数据时,它应该查找 XML 文件。如果它收到 404(或其他错误),它将引发安全异常。

还有……只是为了确保……你一开始没有忘记<?xml version="1.0" encoding="utf-8"?>,我希望?而且您确实记得 XML 文件必须位于 Silverlight 应用程序将访问的服务器上,而不是托管 Silverlight 应用程序的服务器上,对吗?;)

于 2013-05-06T17:43:52.167 回答