我需要一些关于WCF服务的帮助。情况是这样的,我在.net 4.0中创建了一个网站项目,然后我添加了一个名为AdminService.svc的启用Silverlight的WCF服务。我在这个服务中写了几个方法,当然,做了[OperationContracts]。然后我在同一个工作区创建了另一个Silverlight 5.0项目,并尝试使用该服务(AdminService.svc),在此项目中添加了它的引用(我们必须记住,AdminService在同一个工作区中的另一个网站类型项目中运行) 。但是现在每次运行应用程序并尝试调用一个只返回一些数据的方法时,我都会收到此错误!
尝试向URI发送请求时发生错误
的 'http://本地主机:2850 / XYZServices / AdminService.svc'。这可能是 由于尝试以跨域方式访问服务而没有 适当的跨域策略或不适合的策略 用于SOAP服务。您可能需要联系服务的所有者 发布跨域策略文件并确保它允许 要发送的与SOAP相关的HTTP标头。此错误也可能是由此引起的 使用Web服务代理中的内部类型而不使用 InternalsVisibleToAttribute属性。请查看内部异常 了解更多详情。
这个问题的明显答案是添加一个crossdomain.xml和clientaccesspolicy.xml,对吧?我在两个级别的wcf网站类型项目中都有以下内容,
clientaccesspolicy.xml
<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="*"/>
</allow-from>
<grant-to>
<resource include-subpaths="true" path="/"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
和另一个
的crossdomain.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>
请帮助我摆脱困境,现在变得很麻烦。
答案 0 :(得分:0)
我注意到clientaccesspolicy.xml文件中的单个错误可能导致此消息。
有时,当您将网页(博客,MSDN)的文件内容复制到Visual Studio时,您将获得错误的引号字符或隐藏/不可见的unicode字符。
将xml文件的内容复制到记事本并将其粘贴回Visual Studio多次为我解决了这个问题。
您还可以在Visual Studio(工具|扩展管理器)
中使用Silverlight Client Access Policy File Extension