質問
実行中に、現在のコードが実行されている可能性のあるいくつかのホストプロセスを知りたいです。ホストプロセスはBiztalk管理レベルで名前を構成していますが、コード内からどのプロセスにいるのかを知る必要があります。
これを行うためのサポートされている方法が見つからず、サポートされていないメソッドの検索でさえ行き詰っています:-)
編集:tomasrの回答に感謝します。主にロギング/トレースの目的で必要になります。 ODEが実行されているホストを表示するだけでなく、適切なトレースレベルを決定することもできます。
それはまた、これをライブラリレベルで深く掘り下げる必要があり、高速でなければならないことを意味します。たとえば、コードが実行されている最上位コンポーネント(オーケストレーション、パイプラインなど)を見つけるために呼び出しスタックを取得することはできません。
一方、シングルトンコンストラクターで一度だけ理解することができました。これはAppDomainごとに1回呼び出されるため、検索に少し時間がかかる可能性があります。しかし、おそらくあまり意味のある呼び出しスタックがないので、正方形に戻ります:-/
Edit2:Biztalk Management DBには必要な情報が含まれている必要があります。どのホストがどのサーバーで起動されているか、および(おそらく)これらのホストプロセスのプロセスIDを知っています。誰かが私がそこを探し始めることができるポインタを持っているなら、それも私を助けるでしょう。
解決
私が知る限り、「シンプル」というものはありません。それを行う方法。その情報を取得する1つ(やや後方)の方法は、ExplorerOM APIを使用して管理構成データを照会し、実行している場所と実行しているホスト/ハンドラーを把握することです。
たとえば、これをPipelineComponentから実行している場合、メッセージコンテキストでポート名を検索し、ExplorerOMを使用して検索できます。次に、それを使用して、アダプターに関連付けられたハンドラーを照会し、そこからホスト名を取得します。オーケストレーションの完全な名前を探しますが、オーケストレーションの場合も似たようなものになります。
好奇心から、なぜこの情報が必要なのですか?