具有WCF的Silverlight中的跨域策略错误

具有WCF的Silverlight中的跨域策略错误,silverlight,wcf,Silverlight,Wcf,当我将Silverlight应用程序连接到WCF服务时,出现以下错误。我将此wcf作为自助主机服务托管 尝试向URI“”发出请求时出错。这可能是由于在没有适当的跨域策略或不适合SOAP服务的策略的情况下,试图以跨域方式访问服务。您可能需要联系服务的所有者以发布跨域策略文件,并确保它允许发送与SOAP相关的HTTP头。此错误也可能是由于在web服务代理中使用内部类型而未使用InternalsVisibleToAttribute属性造成的。有关详细信息,请参阅内部异常 此错误的可能原因是什么?右键单

当我将Silverlight应用程序连接到WCF服务时,出现以下错误。我将此wcf作为自助主机服务托管

尝试向URI“”发出请求时出错。这可能是由于在没有适当的跨域策略或不适合SOAP服务的策略的情况下,试图以跨域方式访问服务。您可能需要联系服务的所有者以发布跨域策略文件,并确保它允许发送与SOAP相关的HTTP头。此错误也可能是由于在web服务代理中使用内部类型而未使用InternalsVisibleToAttribute属性造成的。有关详细信息,请参阅内部异常


此错误的可能原因是什么?

右键单击.svc文件,然后点击浏览器中的“视图”。首先检查它是否被托管并正确运行。这将为您提供一个良好的起点。

如果您的Silverlight应用程序与服务不在同一个域上,则需要在承载服务的服务器上放置clientaccesspolicy.xml或crossdomain.xml文件


有关详细信息,请参见此链接:

使用Silverlight消费web服务时,请注意在Silverlight中正确设置WCF web服务。与控制台模式客户端不同,在Silverlight中,您不能仅在解决方案中创建WCF新项,而必须在Silverlight解决方案的.Web部分下,右键单击,添加一个名为“Silverlight启用的WCF服务”的新项。现在,您可以转到Silverlight应用程序文件夹,添加服务引用,您将不会收到此运行时错误。这将避免原始海报所指的运行时错误。

您的服务托管在哪里?实际上,首先我将其作为自托管服务托管。但是,当我作为自托管服务托管它时,我找不到放置这两个xml文件(clientaccesspolicy.xml和crossdomain.xml)的位置,所以我将它托管在IIS服务器中,并将这两个xml放在我的“C:\Inetpub\wwwroot”中。然后它完美地工作了。谢谢大家的支持!在本地机器中,它工作良好。但当我在服务器上的IIS中部署WCF时,它就不起作用了。它抛出了同样的错误。当我试图打开crossdomain.xml时,它不会在服务器上打开。它表示“处理资源“”时出现未指定的错误。”我把这两个xml文件都放到了我的“C:\Inetpub\wwwroot”中,它就工作了。thx支持:当我的Silverlight应用程序和WCF服务都使用ASP.NET开发服务器托管在Visual Studio中时,DI出现了此问题(即,未托管在IIS中)。要修复它,我必须将WCF主机网站的虚拟路径更改为/。原因是Silverlight在承载服务的域的根目录中查找clientaccesspolicy.xml。若要更改虚拟路径,请右键单击网站并选择“属性”。在本地计算机中,它可以正常工作。但当我在服务器上的IIS中部署WCF时,它就不起作用了。它抛出了同样的错误。当我试图打开crossdomain.xml时,它不会在服务器上打开。它表示“处理资源“”时出现未指定的错误。”