2008-09-26 45 views
0

我想知道在運行時我的當前代碼正在執行的幾個可能的主機進程中的哪一個。主機進程在Biztalk管理級別配置了名稱,但是我需要從代碼中知道我正在使用哪個進程。如何找出當前的Biztalk主機進程

我沒有找到任何支持的方式來做到這一點,我甚至堅持尋找不支持的方法:-)

編輯:感謝tomasr答案。我會主要用於記錄/追蹤目的。不僅要顯示頌歌運行的主機,還要確定適當的跟蹤級別。

這也意味着,我需要這個在圖書館層面的內容,它必須快速。我不能去拿調用堆棧來找出哪個頂級組件(編排,管道,不管)運行的代碼。

另一方面,我可以想出它只是一次一個單例構造函數。這將被稱爲每個AppDomain一次,因此可能需要一些時間來查找事情。但我可能沒有一個非常有意義的調用堆棧,所以我們回到了第一個方法: -/

Edit2:Biztalk管理數據庫必須包含我需要的信息。它知道哪些主機在哪個服務器上啓動以及(可能)這些主機進程的進程ID。如果有人有指針可以開始在那裏尋找,那也能幫助我。

回答

1

據我所知,沒有任何「簡單」的做法。獲得該信息的一種(稍微向後)的方式是使用ExplorerOM API來查詢管理配置數據並找出您正在執行的位置以及您正在運行的主機/處理程序。

例如,if您正在使用PipelineComponent執行此操作,您可以在消息上下文中查找端口名稱,然後使用ExplorerOM查看它。然後,使用它來查詢與適配器關聯的處理程序,並從那裏獲取主機名。雖然你會尋找完整的編排名稱,但是對於編排來說會是類似的東西。

出於好奇,你爲什麼需要這些信息?