如何将wcf服务公开给不同的客户端

时间:2009-04-17 16:07:08

标签: asp.net wcf

我正在创建一个wcf服务。当我将服务作为“Web引用”添加到我的网站(我通过使用url:http://localhost/myservice.svc?wsdl执行此操作)然后调用服务公开的Web方法时,我得到“操作已超时”例外。但是,当我将该服务作为“服务引用”添加到站点时,调用工作正常。

我将其添加为Web引用的原因是,我想将wcf服务公开给所有客户端,如java,php ......

我查看了“http://blogs.msdn.com/juveriak/archive/2008/03/18/wcf-proxy-that-works-with-different-clients.aspx”中的文章,但我没有尝试将wsdl转换为本文所建议的类型化代理。

关于为什么在将其用作网络参考时出现超时错误的任何想法?

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

可能您使用WsHttpBinding而不是BasicHttpBinding。 .NET 2.0 Web服务无法使用WsHttpBinding服务。

问题是协议之一。 Web服务协议不断变化,增加了安全性,联合身份等等。随着它们的变化,旧技术无法使用较新的协议进行通信。

值得庆幸的是,WCF允许您在单个服务中使用多个协议 - 只需为您要使用的每个协议设置单独的端点。但要小心,因为有些人比其他人更安全。

关于版本控制,MessageVersion类是一个很好的起点。

修改:我应该提到您需要使用MessageVersion作为自定义TextMessageEncodingBindingElement绑定的一部分,如下所示:

<bindings>
    <customBinding>
        <binding name="MyBinding">
            <textMessageEncoding messageVersion="Soap11WSAddressing10"/>
            <httpTransport/>
        </binding>
    </customBinding>
</bindings>