3

双方向の要求/応答送信ポートである WCF サービスを呼び出すオーケストレーションがあります。そのようです:

オーケストレーション

オーケストレーションを送信シェイプの前の状態に維持する方法を見つけようとしています。これは、例外が発生した場合やエンドポイントがダウンした場合に、オーケストレーションを再開して、エンドポイントへの再送信を試行できるようにするためです。

送信/受信シェイプをあらゆる種類のスコープ シェイプでラップして、送信シェイプの上に保持しようとしましたが、役に立ちませんでした。私は Seroter のブログを上下に読んで、彼の投稿で提案されているすべてのことを試しました。

http://seroter.wordpress.com/2007/01/02/orchestration-handling-of-suspended-messages/

たとえば、エンドポイントを削除して送信すると、

System.ServiceModel.ServiceActivationException: 要求されたサービス ' https://my-service.svc ' をアクティブ化できませんでした。サービス インスタンスは、管理上再開または終了されるまで中断されたままになります。再開された場合、インスタンスは最後に永続化された状態から継続し、同じ予期しない例外を再スローする可能性があります。

これは予想されることです。それが言うように、インスタンスは再開時に同じ例外を再スローする可能性があります (これは、私が何を試しても関係ありません)。

私が試したこと:

  • 送信図形をアトミック スコープでラップしますが、例外がスローされた後も中断されます。
  • 送信シェイプと受信シェイプの両方をアトミック スコープでラップしますが、コンパイル時にエラーが発生します。

    エラー 1 アトミック スコープは、「uses」ポートまたはサービスリンクでの requestresponse 操作の送信と対応する受信の両方を含むサービスまたはスコープを含んだり呼び出したりすることはできません

  • Send および Receive シェイプを Long-Running スコープでラップし、例外をキャッチしてから、サスペンド シェイプを使用しようとしましたが、これにより、WCF サービスからの応答を待機している脱水インスタンスが発生します。

他に試してみることができるかどうかはわかりません。基本的に私が求めているのは、どのようにオーケストレーションを「conWrapper」(または sendRCMR の上の任意の場所...) の形で、含まれている画像に表示されるようにするにはどうすればよいですか?

4

2 に答える 2

4

あなたが説明していることについては、Orchestration Persistence を強制する必要はありません。

エンドポイントがダウンしている場合、またはアダプタがその他のエラーをスローした場合、メッセージング インスタンスは最初に再試行モードになり、次に中断されます。それはおそらく、あなたが含めたエラーメッセージが参照している「インスタンス」です。

エンドポイントが再び実行されたら、Messaging インスタンスを再開します。

これは最も一般的なシナリオです。

于 2013-12-26T14:45:47.260 に答える
1

変数のデフォルトを false に設定します。

送信/受信図形と、送信後に変数を true に設定する式図形の周りに長期スコープを配置し、すべての例外 (通常は SOAP 用、System.Exception 用、General 用) の catch ブロックを用意して、アラートが送信された後、一時停止の形になります。

スコープの周りにループの形を置き、偽の間、ループします。

これにより、送信に成功するまでオーケストレーションを再開できます。

于 2013-12-25T07:16:36.240 に答える