我有silverlight4应用程序向其他网络服务器发出跨域请求,作为论坛stackoverflow帖子和MSDN,silverlight限制了跨域请求。但我发现在silverligh4及更高版本中你可以通过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);
任何人都可以解释一下我在这里可能缺少的东西。我知道可以在应用程序中托管另一个本地服务并通过它提出请求。但我不想去那个解决方案。
答案 0 :(得分:1)
我猜SL由于某种原因没有读取XML。
我建议您启动Fiddler并检查Silverlight发出的请求及其响应。在访问来自不同域的数据时,它应该寻找XML文件。如果它获得404(或其他错误),它将抛出安全异常。
另外......为了确保......我希望你在开始时没有忘记<?xml version="1.0" encoding="utf-8"?>
吗?并且您确实记得XML文件必须位于Silverlight应用程序将访问的服务器上,而不是托管Silverlight应用程序的服务器,对吧? ;)