我创建了一个使用WCF服务的Silverlight 2应用程序。 该服务位于本地文件夹(而不是IIS)中,并且可以使用Winforms测试。 当我尝试调用该服务时,它返回一个错误:“没有交叉域的pocily”。
我尝试将clientaccesspolicy.xml和crossdomain.xml添加到: wcf项目文件夹 iis wwwroot 本地驱动器根E:\
但没有任何影响 我应该把它们放在哪里?
答案 0 :(得分:1)
正如你所说,你没有在IIS下运行服务我会做出一些假设
Silverlight应用和wcf服务托管在不同的网址中,如果您已将文件发布到IIS以及http://localhost上的wcf服务,则应用文件://example.html或http://localhost:1234 。这会引发跨域访问问题,因为端口号不同,或者您正在从file:// URI加载silverlight应用程序,并且您自己托管WCF服务。如果您是自托管WCF服务,则无法解决此问题,因为它们需要clientaccesspolicy.xml文件或允许从silverlight URL访问服务的crossdomain.xml文件,但是无法从根目录提供XML自托管WCF服务器。
答案 1 :(得分:1)
如果您从http:// ...上下文转到file:// ...上下文,实际上它不是跨域问题。相反,它是一个跨上下文的问题,出于安全原因,Silverlight 2中不允许这样做(这也发生在http://和https://)。我不确定Silverlight 3中的状态是什么。
答案 2 :(得分:0)
也许你之后没有重启IIS?
编辑:这是一个全面的教程,请确保您没有采取任何措施使其发挥作用:Silverlight 2.0 and WCF。
答案 3 :(得分:0)
嗯...如果发送了clientaccesspolicy.xml请求,请使用fiddler进行检查。
另一方面,虚拟clientaccesspolicy检查连接是否正常工作:
<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="SOAPAction" >
<domain uri="*"/>
</allow-from>
<grant-to>
<resource include-subpaths="true" path="/"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
但是,你应该尝试在同一个域上工作(如果你需要安全的话,那就更好了。)
答案 4 :(得分:0)
答案 5 :(得分:0)
我认为这个链接对你有帮助......