2015-09-09 58 views
1

我有一個Java異步Web服務,我認爲它對大多數Web服務的工作方式不同。如何通過http傳輸爲回調Web服務配置WCF

Client: Send Request 
Server: Send synchronous reply (acknowledge message) 
Some time later 
Server: Send asynchronous reply (data message) 

我導入了WSDL。我使用wsDuelHttpBinding設置了端點。這沒有奏效。然後我試圖自定義綁定

<customBinding> 
    <binding name="CustomBinding"> 
    <compositeDuplex clientBaseAddress="http://10.0.0.15:5555/"/> 
    <oneWay packetRoutable="true" /> 
    <customTextMessageEncoding messageVersion="Soap11WSAddressing10" mediaType="text/xml" /> 
    <httpTransport /> 
    </binding> 
</customBinding> 

我修改了微軟例如,對於CustomTextMessageEncoding,幫我拿過去的一些問題,通過與WS尋址服務不理解頭嘴硬。這些頭文件是客戶端堆棧中的某些內容所必需的。

當前問題是由服務器發送的確認消息引發以下異常。

收到來自單向發送的響應,通過底層的 IRequestChannel。確保遠程端點在其端點(包含OneWayBindingElement的端點)上具有兼容的 綁定。

什麼是<oneWay/>頻道的替代方案? 服務器代碼不在我的控制之下。

+0

我不確定你想要完成什麼,但是在錯誤消息上搜索出現了以下一系列可能對你有幫助的帖子:[單向HTTP請求,第2部分] (http://blogs.msdn.com/b/drnick/archive/2006/08/17/702186.aspx) – Tim

+0

@Tim謝謝,我之前瀏覽過這篇文章,並不認爲這對我的問題有幫助,但多調查一下,讓我覺得它可以幫助我。 – Badger

回答

0

我可以得到這個工作的方式是在客戶端同時擁有WCF服務器和WCF客戶端。

首先,我從服務中下載了WSDL,並製作了兩個副本。我編輯了一個WSDL,因此只有來自服務的請求才能得到'ACK'的回覆,我刪除了所有其他<wsdl:operation/>元素。從這我創建了一個WCF客戶端。我編輯了另一個WSDL,因此它只有異步回覆操作並從此創建了一個WCF服務。

客戶端的WCF客戶端部分做客戶端的以下

Client: Send Request 
Server: Send synchronous reply (acknowledge message) 

WCF服務器部分處理該

Some time later 
Server: Send asynchronous reply (data message) 

的綁定客戶端和服務,現在只是basicHttpsBinding。

相關問題