私はメッセージバスを介してWCFトランスポートを拡張しています.request-replyモードはうまく機能します。入出力モードを実装しているときに問題が発生しました。状況は次のとおりです。
1、InputChannel と OutputChannel を作成し、TransportBindingElement がそれらを返すようにしました。
2、2 つのメソッドを持つコントラクト インターフェイスを作成しました。IsOneWay = true という属性があり、それが Method1 だとしましょう。もう 1 つは Method2 という名前ではありませんでした。
3. Method1 を呼び出すと、InputChannel と OutputChannel ではなく、RequestChannel と ReplyChannel が返されたことがわかります。また、応答チャネルは WCF メッセージを受信し、RequestContext を返すことができます。しかし、サービス コードは呼び出されませんでした。
4, Method1 で IsOneWay = false を設定すると、うまく機能します。
4, Method2 を呼び出すと、うまく動作します。
5、IsOneWay = true のメソッドが 1 つしかない別のサービス コントラクトを作成しました。このメソッドを呼び出すと、WCF は InputChannel と OutputChannel を提供し、うまく機能します (サービス コードが実行されました)。
私の質問は次のとおりです。1、 IsOneWay = true メソッドと IsOneWay = false メソッドを使用するサービスがある場合、WCF は要求応答チャネルを提供しますが、それは正しいですか?
2. メソッドは IsOneWay = true でしたが、同じサービス コントラクトに IsOneWay = false メソッドも含まれているサービス呼び出しを処理するにはどうすればよいですか?
ところで、IsOneWay = true メソッドへのリクエスト メッセージでは、MessageID が NULL であることに気付きました。リクエスト メッセージに新しい ID を設定しましたが、うまくいきませんでした。サービス コードはまだ呼び出されていません。