从silverlight 4中消费WCF服务

本文关键字:WCF 服务 silverlight | 更新日期: 2023-09-27 18:12:09

我有一个解决方案,其中包含一个Silverlight 4项目和一个WCF类库项目。我在Silverlight项目中添加了一个对WCF服务的服务引用(WCF没有发布在IIS上)。我尝试从Silverlight项目调用该服务,它给了我以下异常:

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

我尝试通过将以下两个文件添加到WCF库项目

来解决这个问题

1) clientaccessppolicy .xml,其中包含以下xml

<?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 path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

2) crossdomain.xml,其中包含以下xml

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy> <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

然后构建WCF项目并在silverlight项目中更新服务引用,但同样的异常仍然存在。

我应该如何处理这个异常?我应该发布服务吗?这算是自托管吗??

从silverlight 4中消费WCF服务

将clientaccessppolicy .xml文件放到iis的根目录下。例如c:'inetpub'wwwroot