2011-02-23 68 views
1

我有一个包含两个客户端服务的解决方案。他们可以相互沟通,发送消息,并引发事件。 当我用一台机器进行测试时,它们工作得很好,但是我将它们安装在不同的机器上,互联网已连接,并且它们互相找不到。由于我自己托管我的服务,这可能是原因吗?我使用DuallHttpBinding作为绑定配置。 我的情况是一个具有两个客户端实例和一个服务的聊天应用程序,其中每个服务器运行在不同的机器上,而不具有除因特网连接之外的任何网络连接。在不同的机器上测试WCF聊天应用程序

+0

网络是一个复杂的问题。可能有几个原因:未连接到服务器,端口被阻塞(客户端或服务器),设计不正确等; – 2011-02-23 16:12:34

+0

你能描述一下你当前的绑定配置吗? – 2011-02-23 16:19:28

+0

你能更具体吗?我的意思是我们需要指定某种配置,以便在设计时发生这种情况,或者WCF应该能够自动执行此操作? – 2011-02-23 16:22:22

回答

0

DualHttpBinding要求两个客户端能够打开连接并向对方发送消息。最有可能的客户端之一是无法接受传入连接的防火墙,没有端口转发的NAT路由器,或者其他客户端根本找不到正确的地址。

通过HTTP进行的这种直接双向通信很难在您进入互联网后立即获得。要调试它,我建议看看Fiddler这是一个很好的HTTP调试工具。你必须观察连接,看看客户端是否可以连接,如果没有连接,为什么连接失败。那么你将不得不解决导致这个问题的连接问题。

我不确定它是否适用于您,但它会显着减少错误,将net.tcp用作绑定,并将服务器放置在所有客户端都可以连接到的位置(如net.tcp doesn' t要求服务器能够打开一个端口回到客户端,它可以使用现有的连接发送)。它只需要客户端能够连接到服务器,而不是服务器需要能够创建第二个连接返回到客户端,从而通过标准NAT配置工作。

+0

谢谢。使用NetTcp绑定服务的客户端是否有可能不在物理网络中,只能使用互联网作为连接平台?因为我的客户是不同国家的客户 – 2011-02-23 16:31:12

+0

是的,只要他们可以在互联网上看到对方。你需要一端有一个互联网客户端可以连接的开放端口,但另一个客户端可以在NAT路由器后面,它仍然可以工作。这与配置Web服务器基本相同。 :) – Tridus 2011-02-23 16:53:29