2009-04-17 95 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

相關問題