C# 如何";绑定";到.NET远程处理服务器中特定通道(tcp、http、ipc)的服务?

C# 如何";绑定";到.NET远程处理服务器中特定通道(tcp、http、ipc)的服务?,c#,.net,remoting,C#,.net,Remoting,我有一个复杂的.NET远程处理服务器应用程序,它提供了一些服务。客户端当前可以使用tcp和http通道连接到服务器 现在我需要实现一些新的管理服务,但我想限制它们在本地计算机上的可用性,即我想创建一个可以使用这些新服务的管理工具,但我不希望敏感数据从物理上离开服务器,因此我需要限制在同一台服务器计算机上运行管理工具 我考虑添加新的服务,并在服务器上注册ipc通道,以供管理工具使用。现在问题来了:如何防止远程客户端使用tcp或http通道连接到这些新的管理服务?我可以在app.config中说“注

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

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

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


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

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

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


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

谢谢,Rob。看起来我不经意间把自己画进了一个角落。更像是.NET远程处理把你画进了一个角落;)当我第一次读到你的帖子时,我认为在看代码之前这会很容易。我开始使用.NET远程处理--你能告诉我你是否尝试注册过多个HttpChannel,如果是,你成功了吗?Dave,很抱歉没有早点注册。答案是否定的,我在生产中只使用了单个tcp和http通道。但是,让我找出一些旧代码并为您检查一下。几分钟后回来。好的,看来它不起作用了。当尝试两次注册http通道时,无论我是从配置还是代码设置远程处理,RegisterChannel()都会引发“通道已注册”异常。我想这是不受支持的(我已经搬到了WCF,所以我对远程处理的直觉可能已经过时了。)