我正在创建一个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转换为本文所建议的类型化代理。
关于为什么在将其用作网络参考时出现超时错误的任何想法?
答案 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>