none
wcf服务库+web应用程序的跨域问题。 RRS feed

  • 问题

  • 我是建了一个wcf服务库,注意不是在网站里添加的svc后缀的wcf服务。

    如果直接在网站里面添加svc后缀名的wcf服务我没有问题,也没碰到跨域问题,数据正常获取。
    可是在silverlight项目中,添加wcf服务库WcfService中的wcf服务就是不行,老说跨域问题.
    clientaccesspolicy.xml和crossdomain.xml我都有添加。

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

    我的ServiceReferences.ClientConfig:
    XML code
    <configuration> <system.serviceModel> <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_IProductWS" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> <security mode="None" /> </binding> </basicHttpBinding> </bindings> <client> <endpoint address="http://localhost:8784/Design_Time_Addresses/WcfService/ProductWS/" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IProductWS" contract="ServiceReference1.IProductWS" name="BasicHttpBinding_IProductWS" /> </client> </system.serviceModel> </configuration>

    我的clientaccesspolicy.xml:
    XML code
    <?xml version="1.0" encoding="utf-8" ?> <access-policy> <cross-domain-access> <policy> <allow-from http-request-headers="*"> <domain uri="*"></domain> </allow-from> <grant-to> <resource path="/" include-subpaths="true"></resource> </grant-to> </policy> </cross-domain-access> </access-policy>


    我注意到网站的端口是12998,wcf服务的端口是8784,是不是就因为这才有个跨域的问题啊?如果改成一致会提示端口冲突。
    还有clientaccesspolicy.xml这个文件到底 应该放到wcf服务的目录里,还是放到网站的目录里?
    我在好多地方都放了,服务目录,网站目录,项目目录都放了,依然报错。
    大家帮帮忙!
    2010年6月8日 7:43

答案

  • 我解决了,把wcf服务库发布到iis后,更改几处连接就可以了。

    但是现在还有一个问题,就是需要把wcf服务也放到IIS里面,但是我用的虚拟主机,只能用一个虚拟目录,这样子的话就没有办法了吗?

    • 已标记为答案 打瞌睡 2010年6月9日 2:41
    2010年6月9日 2:15

全部回复

  • 我解决了,把wcf服务库发布到iis后,更改几处连接就可以了。

    但是现在还有一个问题,就是需要把wcf服务也放到IIS里面,但是我用的虚拟主机,只能用一个虚拟目录,这样子的话就没有办法了吗?

    • 已标记为答案 打瞌睡 2010年6月9日 2:41
    2010年6月9日 2:15
  • 发布之后,合并到一起就可以了,包括web.config
    2010年6月9日 2:40