【发布时间】:2023-09-30 22:47:01
【问题描述】:
我有一个复杂的 .NET Remoting 服务器应用程序,它提供了一些服务。客户端目前可以使用 tcp 和 http 通道连接到服务器。
现在我需要实现一些新的管理服务,但我想限制它们对本地机器的可用性,即我想创建一个可以使用这些新服务的管理工具,但我不希望敏感数据物理离开服务器,所以我需要限制在同一台服务器计算机上运行管理工具。
我考虑添加新服务并在服务器上注册 ipc 通道以供管理工具使用。现在问题来了:如何防止远程客户端使用 tcp 或 http 通道连接到这些新的管理服务?我可以在 app.config 中说类似“注册服务 x,由程序集 A 中的 C 类实现,只能通过 ipc 使用”,“注册服务 y,由程序集 A 中的 D 类实现,可通过 tcp/http 使用”之类的话(或使用远程基础设施类)?
令我困惑的是“只能通过 ipc 使用”部分。 (不,现在不能移植到 WCF。)
【问题讨论】:
-
我开始使用 .NET Remoting -- 你能告诉我你是否曾经尝试过注册多个 HttpChannel,如果是,你成功了吗?
-
戴夫,很抱歉没有早点入住。答案是否定的,我只在生产中同时使用了单个 tcp 和 http 通道。但是让我找出一些较旧的代码并为您检查。几分钟后回来。
-
好的,所以看起来它不起作用。 ChannelServices.RegisterChannel() 在尝试注册 http 通道两次时抛出“通道已注册”异常,无论我是从配置还是代码中设置远程处理。我想这是不支持的(我已经转移到 WCF,所以我对远程处理的直觉可能已经生锈了。)