我想在运行时知道当前代码正在执行的几个可能的主机进程中的哪一个。主机进程已在Biztalk管理级别配置了名称,但我需要知道我在代码中的哪个进程。

我没有找到任何支持的方法来执行此操作,我甚至坚持搜索不受支持的方法: - )

编辑:感谢tomasr的回答。我需要主要用于记录/跟踪目的。不仅要显示正在运行的ode的主机,还要确定适当的跟踪级别。

这也意味着,我需要深入了解库级别,而且必须快速。我不能去获取调用堆栈,例如找出运行代码的顶级组件(编排,管道等)。

另一方面,我可以在单例构造函数中找出它一次。每个AppDomain会调用一次,因此可能需要一段时间来查找。但我可能没有一个非常有意义的调用堆栈,所以我们回到原点: - /

Edit2:Biztalk管理数据库必须包含我需要的信息。它知道哪些主机是在哪个服务器上启动的,并且(可能)是这些主机进程的进程ID。如果某人有指针我可以开始在那里看,那对我也有帮助。

有帮助吗?

解决方案

据我所知,没有任何“简单”的东西。这样做的方式。获取该信息的一种方法(稍微向后)是使用ExplorerOM API查询管理配置数据并找出您正在执行的位置以及您正在运行的主机/处理程序。

例如,如果您是从PipelineComponent执行此操作,则可以在消息上下文中查找端口名称,然后使用ExplorerOM查找它。然后,使用它来查询与适配器关联的Handler,并从那里获取主机名。虽然您正在寻找完整的编排名称,但是对于业务流程来说会类似。

出于好奇,你为什么需要这些信息?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top