错误信息:
尝试向 URI“http://192.168.1.107/WcfService.svc”发出请求时出错。这可能是由于试图以跨域方式访问服务而又没有正确的跨域策略,或策略不适用于 SOAP 服务。您可能需要与该服务的所有者联系,以发布跨域策略文件并确保该文件允许发送 SOAP 相关的 HTTP 标头。出现此错误也可能是由于使用的是 Web 服务代理中的内部类型而没有使用 InternalsVisibleToAttribute 属性。有关详细信息,请参阅内部异常。
工程的部署方式:
一层为Silverligh画面级别
一层为Web(包含WCF服务),同时搭建到IIS上部署的。
1.在IIS上创建WCF服务
2.使用VS2010将本地WCF的服务地址更新为IIS对应的IP地址
使用本地IP地址,将WCF生成的服务(http://localhost/XX/WcfService.svc)替换为 http://192.168.1.107/WcfService.svc
3.在IIS上创建虚拟目录,搭建工程(Web),供外部访问,同时在wwwroot的目录下添加文件(ClientAccessPolicy.xml,CrossDomain.xml)跨域文件
4.在Web工程下添加ClientAccessPolicy.xml
5.设置Web工程的属性中设置[使用本地IIS Web服务器] 项目URL修改为:http://192.168.1.107/XX (项目开始搭建时VS2010自动创建的是 http://localhost/XX)
6.OK,成功了,原因不知道,求大大们指教,或者推荐文章。
跨域文件
ClientAccessPolicy.xml
<?xml version="1.0" encoding="utf-8" ?> <access-policy> <cross-domain-access> <policy> <allow-from> <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-access-from domain="*"/> </cross-domain-policy>
关于跨域文件我是从MSDN上下载的,或者在MSDN上搜索[access-policy]