2017-02-25 3 views
2

私の目標は、カスタムFunctoidでエラーが発生した後に、中断されたインスタンスウィンドウのエラー情報タブにBizTalk管理コンソールに表示されるエラーの説明に影響を与えることです。可能であれば、失敗したメッセージにこのエラーの説明を表示するために、ErrorReport.Description昇格プロパティも欲しいと思います。BizTalk管理コンソールのカスタムFunctoidエラーからの例外メッセージを表示するにはどうすればよいですか?

私はカスタムFunctoid開発について私が知ることができるすべてを読んだことがありますが、それらの中でエラー処理についてはあまり見つけられません。特に、私のFunctoidsが例外をスローするときはいつも、例外自体のメッセージではなく、リフレクションによって例外が発生するたびに発生する定型的な "Exceptionが呼び出しのターゲットにスローされました"というメッセージが表示されます。

私はBaseFunctoidクラスのフレームワーク内で、反射境界を横切るようにエラー文字列を送信することができるようにしたいと考えていました。カスタムFunctoid内からBizTalk Administration Consoleにエラー情報を渡す方法はありますか?

DatabaseLookupFunctoidとDatabaseErrorExtractFunctoidのアプローチをエミュレートすると、抽出されたエラーでマップに失敗することはありますか?その例に示すように、デスティネーションスキーマのフィールドにマップするのですか?

答えて

0

最も簡単な答えは、あなただけです。

覚えておいては、特別な何ものBizTalkアプリケーションでのエラー処理については全くありません、それはを扱うだけ定期昔ながらネットエラーです。

あなたのコードでエラーをキャッチし、Windowsイベントログに詳細を書き込んでください(カスタムイベントソースを作成してください)...それだけです。それが私の全部です。私は特にBT Adminに表示されるものについて心配していません。 強いテキスト

1

これを実行する最も簡単な方法は、あなたのコード内でこのような何かを書いて、カスタムのC#を使用している:

System.Diagnostics.EventLog.WriteEntry("EVENT_LOG_SOURCE", "Error message...", System.Diagnostics.EventLogEntryType.Error); 

ジョンズ-305が言及として、あなたは必ずあなたのイベントソースが登録されていることを確認する必要があります(例:System.Diagnostics.EventLog.CreateEventSource("EVENT_LOG_SOURCE", "Application") - これは実際には、インストール手順の一部として、EventLogInstallerまたは環境を設定するための何らかのスクリプトを使用して行う必要があります)。確かにBizTalkのエラー処理は.NETエラー処理ですが、マップは実際にはXSLTとして実行されており、実行が例外やエラーの発生に大きな影響を及ぼすコンテキストがあることに留意してください特に処理されない例外を処理します。

オーケスト

あなたはそれに例外処理を持つオーケストレーションで変換を実行している場合は、処理されますスローされた例外も、あなたがオーケストレーションを持っている追加のログに陥る可能 - 他の言葉でC#のfunctiodからthrowを実行すると、C#のどこか別の場所で動作すると思うように動作します。しかし、XSLTの例外処理が常にあなたが思うように動作するとは限らないため(以下を参照)、マップがどこかで使用されるかどうかわからないので、これを避けるようにしています。

センドは/その中に例外を使用すると、送信上のマップを実行するか、ポートを受信して​​いる場合、ポート残念なことに

を受信し、throw、あなたは、ほぼ間違いなくイベントログに非常に助けにならないエラーメッセージが表示されますし、グループハブ内の中断されたインスタンス変換を簡単にキャンセルする簡単で簡単な方法はありません.XSLT 1.0にはこれを行う方法がありません(たとえばThrowing an exception from XSLTを参照)。その結果、出力の特定のノード(および/またはEventLog)にエラー文字列を出力するか、完全にカスタムのXSLTをたくさん作成して入力を検証しようとすると、またはスキーマが適切に設計され、必要に応じて検証コンポーネントが使用されます。たとえば、特定の正規表現と一致する必要があるノードがある場合、または空でない場合、またはX回以上繰り返してはいけない場合は、スキーマに対してこれらの制限を設定してから、XmlValidatorまたはマップする前に似ています。

+0

私は、Scripting Functoidsで呼び出された外部アセンブリ関数でEventLogを処理しています。しかし、私は、サスペンドされたインスタンス自体のエラーメッセージを正しく取得することで、管理が容易になるようにしたいと考えていました。代わりに、タイムスタンプと眼球相関を行って、どのエラーがどのインスタンスに対応するのかを把握する必要があります。これは痛みです。私もエラー文字列出力ノードのアプローチを試しましたが、ソース文書全体を宛先にもマッピングする必要があります。エラーが検出された場合、より多くの処理ができるようになりました。 – bwerks

+0

ルーティングやメッセージの相関付けにこれを行う必要がある場合は、常に値を確認してプロモートプロパティに出力し、それに基づいてルーティングすることができますが、検証はまだまだ良いと思います –

関連する問題