开箱即用,您是否考虑过将 WCF 与 MSMQ 结合使用?我不确定我是否完全理解您的架构,但听起来 API 的客户端必须启动另一个托管 API 的进程。在您启动 API 主机和客户端尝试进行调用之间可能存在时间问题。Microsoft 最近已弃用 .NET Remoting(以及他们以前的所有其他通信技术,如 ASMX Web 服务)作为遗留技术,并强烈建议开发人员迁移到 WCF 平台。
如果您将 WCF 与 MSMQ 一起使用,那么您应该不会遇到计时问题。无论 API 主机是否正在运行,您的客户端应用程序都可以将消息放入持久队列中。API 主机可以随时启动,它将拾取并处理队列中等待的任何消息。即使您仍然让客户端应用程序启动 API 主机,时间问题也不再是问题,因为您使用队列而不是 .NET Remoting 来传输消息。WCF 为 MSMQ 提供了一个漂亮、方便、易于使用的包装器,因此入门门槛相对较低。
使用 WCF over .NET Remoting 的另一个好处是,您可以轻松地将 API 主机移动到不同的物理服务器,而无需更改客户端应用程序。如果您愿意,您甚至可以迁移到不同的队列平台(例如 AMQP 上的 RabbitMQ),而无需更改客户端或 API 主机应用程序。WCF 为您处理所有这些交互,在您的客户端应用程序和 API 主机之间提供更清晰的解耦和更可靠的通信。
如果迁移到 WCF 不是一个选项,您应该能够使用 .NET Remoting 显式设置端口。我不确定您是如何配置 API 主机的,但任何给定远程对象的 URL 通常采用以下形式:
tcp://<hostname>[:<port>]/<object>
如果添加端口,那么您应该能够使用 Abhijeet 的解决方案来确定端口是否打开。您不会获得 WCF 的松散耦合和可靠的通信优势,但肯定会减少工作量。;)