适用于Silverlight App的WCF

时间:2009-05-24 09:37:10

标签: silverlight silverlight-2.0

我创建了一个使用WCF服务的Silverlight 2应用程序。 该服务位于本地文件夹(而不是IIS)中,并且可以使用Winforms测试。 当我尝试调用该服务时,它返回一个错误:“没有交叉域的pocily”。

我尝试将clientaccesspolicy.xml和crossdomain.xml添加到:   wcf项目文件夹   iis wwwroot   本地驱动器根E:\

但没有任何影响 我应该把它们放在哪里?

6 个答案:

答案 0 :(得分:1)

正如你所说,你没有在IIS下运行服务我会做出一些假设

  • 您的silverlight应用程序托管在您通过双击加载的html页面中,在浏览器位置栏中提供file:// URI,或者您将其发布到本地IIS。
  • 您的WCF服务正在某个自托管进程中运行,如命令行应用程序,Windows服务或Winforms应用程序。无论它通过它托管什么,都不会与您的silverlight应用程序在同一个URL上。

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)

我认为这个链接对你有帮助......

How to Use WCF service