我有一个包含 Silverlight 4 项目和 WCF 类库项目的解决方案。我在 Silverlight 项目中向 WCF 服务添加了一个服务引用(WCF 未在 IIS 上发布)。我尝试从 Silverlight 项目调用该服务,它给了我以下异常:
尝试向 URI 发出请求时出错
http://localhost:8732/Design_Time_Addresses/CustomWcfService/MyService/
。这可能是由于在没有适当的跨域策略或不适合 SOAP 服务的策略的情况下尝试以跨域方式访问服务。您可能需要联系服务的所有者以发布跨域策略文件并确保它允许发送与 SOAP 相关的 HTTP 标头。此错误也可能是由于在 Web 服务代理中使用内部类型而不使用 InternalsVisibleToAttribute 属性造成的。有关更多详细信息,请参阅内部异常。
我尝试通过将以下两个文件添加到 WCF 库项目中来解决此问题
1) clientaccesspolicy.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>
然后在 silverlight 项目中构建 WCF 项目并更新服务引用,但仍然存在相同的异常。
我应该怎么做才能处理这个异常?我应该发布服务吗?这被认为是自托管吗?