【问题标题】:wcf class library cross domain exceptionwcf 类库跨域异常
【发布时间】:2011-10-23 13:05:00
【问题描述】:

在我开始之前,我应该说我使用的是 silverlight3 和 .Net 3.5。 我有一个 wcf 类库,其中包含一些方法,我已将其添加到 silverlight 类库(添加 wcf 类库,首先我将整个 wcf 类库项目添加到 silverlight 类库解决方案,然后我添加wcf 类库对我的silverlight 类库的服务引用),假设silverlight 类库的输出是用户控件,所以我将类库添加到silverlight 应用程序(我的主项目)作为服务参考以使用用户控件但是当应用程序要实例化用户控件时抛出异常

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

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

【问题讨论】:

    标签: wcf silverlight-3.0


    【解决方案1】:

    您可以通过两种方式解决此问题。

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

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

    在实际实现中,您需要将实际的 XML 作为流返回。 Silverlight 的 XML 示例可以在 MSDN 找到。

    第二:只需将clientaccesspolicy.xml 放在服务实现的根目录中,如this blog post 中所述。

    【讨论】:

      【解决方案2】:

      只需将clientaccesspolicy.xml放在根目录下即可

      c:\inetpub\wwwroot\clientaccesspolicy.xml 
      

      然后它会工作。

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

      【讨论】:

        猜你喜欢
        • 2011-06-23
        • 1970-01-01
        • 2011-10-15
        • 2013-05-05
        • 2011-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-03
        相关资源
        最近更新 更多