wcf类库跨域异常

wcf类库跨域异常,wcf,silverlight-3.0,Wcf,Silverlight 3.0,在开始之前,我应该说我使用silverlight3和.NET3.5。 我有一个wcf类库,其中包含一些方法,我已经将其添加到silverlight类库中(要添加wcf类库,首先我将整个我的wcf类库项目添加到silverlight类库解决方案中,然后我将wcf类库的服务引用添加到我的silverlight类库中),假设silverlight类库的输出是一个usercontrol,因此我将类库作为服务引用添加到silverlight应用程序(我的主项目)以使用usercontrol,但当应用程序想

在开始之前,我应该说我使用silverlight3和.NET3.5。 我有一个wcf类库,其中包含一些方法,我已经将其添加到silverlight类库中(要添加wcf类库,首先我将整个我的wcf类库项目添加到silverlight类库解决方案中,然后我将wcf类库的服务引用添加到我的silverlight类库中),假设silverlight类库的输出是一个usercontrol,因此我将类库作为服务引用添加到silverlight应用程序(我的主项目)以使用usercontrol,但当应用程序想要实例化usercontrol时,会引发异常

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


我知道我应该有一个cleinaccesspolicy.xml文件,但我不知道在哪里。

您可以用两种方法解决这个问题

首先:您的商店服务可以实施为Silverlight应用程序提供访问策略的方法:

public interface IGalleryShopService
{
    [OperationContract, WebGet(UriTemplate = "/clientaccesspolicy.xml")]
    Stream GetSilverlightClientAccessPolicy();

    /* other contracts declarations */
}
在实际实现中,您需要将实际的XML作为流返回。Silverlight的XMLs示例可在上找到


Second:只需将
clientaccesspolicy.xml
放入服务实现的根目录,如中所述。

只需将clientaccesspolicy.xml放入根目录,即

c:\inetpub\wwwroot\clientaccesspolicy.xml 
那就行了

因为您的网站在
http://localhost/clientaccesspolicy.xml
或者您可以更改xml文件的路径。使用虚拟目录将其放到根目录