0

.NET WCF サービス プロジェクトを使用して、サード パーティの WDSL に基づいて Web サービスを再作成しています。ただし、クライアントは、void 型の場合でも、すべての操作に対する応答を期待しています。空の本文は、操作が正常に完了したことを示すために使用されます。

応答は次のようになります。

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

問題は、SOAP 1.1 メッセージ形式と基本的な http バインディングを使用して faultexception をスローしても、新しく作成した wcf サービスに応答本文がないことです。

常に 1. 応答本文を送信し、2. SOAP 1.1 を使用して障害本文を送信する方法はありますか? SoapUI を使用してサービスをテストしています。

4

1 に答える 1

0

svcutil.exe ユーティリティと既存の WDSL ファイルを使用してインターフェイス コードを生成することにより、既存の Web サービスを再作成しました。生成されたインターフェイス コードには、すべての操作定義を一方向メソッドに変換する属性がありました。

これにより、サービスのトランスポート レベルでエラーが発生しない限り、すべてのメソッドが http 202 承認応答を返すようになりました。

IsOneWay 属性の意味を実際に知らずに、新しい Web サービス コード ビハインド ファイルからインターフェイスを参照し、すべてのメソッドを実装しただけです。

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

定義を IsOneWay=false に変換すると、サービスの動作が実際に変更され、希望どおりになりました。

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

WCF と確認から回答を得ました。クライアントに「OK 了解」を返信する必要がありますか?

于 2013-03-22T16:29:50.677 に答える