2013-03-22 94 views
0

我們正在使用.NET WCF服務項目重新創建基於第三方WDSL的Web服務。 然而,即使客戶端是無效類型,客戶端仍然期待所有操作的響應。 空體將用於表示操作成功完成。從WCF類型void WCF操作發送空soap對象響應

的反應應該是這樣的:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Body/> 
</s:Envelope> 

的問題是,我們的新創建的WCF服務具有即使我們使用SOAP 1.1消息格式和基本的HTTP綁定拋出的FaultException沒有反應的身體。

是否有辦法始終1.發送響應主體,2.使用SOAP 1.1發送故障主體? 我們使用SoapUI來測試服務。

回答

0

我們通過使用svcutil.exe實用程序和現有的WDSL文件生成接口代碼來重新創建現有的webservice。它生成的接口代碼具有一個屬性,可以將所有操作定義轉換爲單向方法。

只要在服務的傳輸級別上沒有錯誤,就會使所有方法返回一個http 202接受的響應。

我們只是簡單地引用了我們新的web服務代碼後面的接口,並實現了所有方法,但實際上並不知道IsOneWay屬性的含義。

[System.ServiceModel.OperationContractAttribute(IsOneWay = true, Action = "Case_New")] 

轉換定義是IsOneWay = false實際上改變了服務的行爲,完全按照我們喜歡的方式進行。

[System.ServiceModel.OperationContractAttribute(IsOneWay = false, Action = "Case_New")] 

我們得到的答案從WCF and confirmations - do I need to send back a 'OK got it' to client?