代码之家  ›  专栏  ›  技术社区  ›  Alan

如何将服务“绑定”到.NET远程处理服务器中的特定通道(tcp、http、ipc)?

  •  3
  • Alan  · 技术社区  · 16 年前

    我有一个复杂的.NET远程处理服务器应用程序,它提供了一些服务。客户端当前可以使用tcp和http通道连接到服务器。

    现在我需要实现一些新的管理服务,但我想限制它们在本地计算机上的可用性,即我想创建一个可以使用这些新服务的管理工具,但我不希望敏感数据从物理上离开服务器,因此我需要限制在同一台服务器计算机上运行管理工具。

    我考虑添加新的服务,并在服务器上注册ipc通道,以供管理工具使用。现在问题来了:如何防止远程客户端使用tcp或http通道连接到这些新的管理服务?我可以在app.config中说“注册服务x,由程序集A中的类C实现,仅可通过ipc使用”,“注册服务y,由程序集A中的类D实现,可通过tcp/http使用”(或使用远程处理基础设施类)?

    “只能通过ipc使用”这一部分让我困惑。(不,现在还不能移植到WCF。)

    2 回复  |  直到 16 年前
        1
  •  3
  •   Rob Prouse    16 年前

    RegisterWellKnownServiceType没有允许您指定在哪个通道上注册的重载,IPCServerChannel上也没有注册服务的任何方法,因此这些都不起作用。

    我能想到的最好办法就是编写一个ChannelSink来过滤您的消息或提供安全性。可以将它们添加到TcpChannel和HttpChannel的构造函数中,以过滤出仅限管理员的调用。

        2
  •  1
  •   Nick Berardi    16 年前

    获取调用它的服务的IP地址。如果不是127.0.0.1,则拒绝呼叫。