我目前有一个GUI程序,它使用WCF和net.tcp
绑定连接到服务器端应用程序。用于连接的接口定义了CallbackContract
。
我们计划将服务器端进程转移到无法从客户端访问的新数据中心,因此WCF调用将不再有效。但是,我们现有的服务器能够连接到数据中心,因此我们目前在这些服务器上运行GUI,在服务器上运行远程桌面。
但是,这种做法不可扩展,所以我写了一个“中间代理人”,它在服务器上运行并侦听TCP连接。我们的客户端应用程序连接到此,它连接到数据中心的WCF服务器。发送到代理的所有内容都将转发到WCF服务器应用程序,从WCF服务器应用程序读取的所有内容都将发送到GUI应用程序。对于我们所有的非WCF应用程序,这没有问题,但它拒绝为任何WCF应用程序工作。我得到了连接,并且有一个简短的数据交换,但随后一切都停止了。
似乎net.tcp
层检测到中间有一个人并决定停止发送/接收数据。我没有使用和安全(绑定使用SecurityMode.None
)。我也尝试在portproxy
命令行应用程序中使用netsh
功能,但遇到同样的问题 - 每个非WCF应用程序都可以工作,但WCF应用程序却没有!
我很欣赏这是一个相当小众的事情,但我想知道是否有人对我为何无法拦截WCF流量有任何见解?