2009-04-17 97 views
2

我正在创建一个wcf服务。当我将服务作为“Web引用”添加到我的网站(我通过使用url:http://localhost/myservice.svc?wsdl执行此操作),然后调用服务公开的Web方法时,我得到一个“Operation has timed out”异常。但是,当我将该服务作为“服务参考”添加到该网站时,这些调用工作正常。如何将wcf服务公开给不同的客户端

原因IAM将其添加为一个Web引用,我要揭露WCF服务像Java,PHP和所有客户端.....

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

任何想法,为什么我在使用它作为Web引用时出现超时错误?

回答

0

可能你使用的是WsHttpBinding而不是。 .NET 2.0 Web服务不能使用WsHttpBinding服务。

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

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

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

编辑:我应该提到的是,你需要使用MessageVersion作为自定义的一部分TextMessageEncodingBindingElement绑定,就像这样:

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

MessageVersion如何成为版本消息的一种方式?这告诉你它是SOAP 1.1还是SOAP 1.2 - 它不能让你指定“这是我的服务v1”或“我的服务v2”。 – 2009-04-17 16:21:32

+1

我在wcf服务中添加了一个“BasicHttpBinding”部分。 – Developer 2009-04-17 16:27:16

相关问题