0

現在のコードが実行されているいくつかの可能なホスト プロセスのどれで実行時に知りたいです。ホスト プロセスには Biztalk 管理レベルで名前が構成されていますが、コード内から自分がどのプロセスにいるのかを知る必要があります。

これを行うためのサポートされている方法が見つかりませんでした。サポートされていない方法の検索に行き詰まっています:-)

編集:答えてくれた tomasr に感謝します。主にロギング/トレースの目的で必要になります。ode が実行されているホストを表示するだけでなく、適切なトレース レベルを決定することもできます。

これはまた、ライブラリ レベルでこれが必要であり、高速でなければならないことを意味します。たとえば、コードが実行されている最上位コンポーネント (オーケストレーション、パイプラインなど) を見つけるためにコール スタックを取得することはできません。

一方、シングルトンコンストラクターで一度だけ理解できました。これは AppDomain ごとに 1 回呼び出されるため、検索に少し時間がかかる場合があります。しかし、そこにはあまり意味のあるコール スタックがないので、振り出しに戻ります :-/

Edit2: Biztalk 管理 DB には、必要な情報が含まれている必要があります。どのホストがどのサーバーで開始されているか、および (おそらく) これらのホスト プロセスのプロセス ID を認識しています。誰かが私がそこを見始めることができるポインターを持っていれば、それも私を助けるでしょう.

4

1 に答える 1

1

私の知る限り、「簡単な」方法はありません。その情報を取得する 1 つの (やや逆向きの) 方法は、ExplorerOM API を使用して管理構成データを照会し、実行している場所と実行しているホスト/ハンドラーを把握することです。

たとえば、PipelineComponent からこれを実行している場合、メッセージ コンテキストでポート名を探してから、ExplorerOM を使用して調べることができます。次に、それを使用してアダプターに関連付けられたハンドラーを照会し、そこからホスト名を取得します。完全なオーケストレーション名を探しますが、オーケストレーションの場合も同様です。

好奇心から、なぜこの情報が必要なのですか?

于 2008-09-26T12:30:13.547 に答える