2011-05-27 50 views
1

我想在两台机器之间进行WCF通信,其中一台将充当服务器,另一台充当客户端。我能够使其在我的系统中工作,但当我尝试连接到我的朋友的系统时它不起作用。两台PC之间的WCF通信不起作用

编辑:一个奇怪的事情现在正在发生。我刚刚通过提供“wcftestclient地址”从命令提示符启动了wcftestclient。它检索了我朋友的服务器的元数据。但是,当我调用该操作时,它会给出错误“没有端点在本地主机上侦听”。它怎么可能是本地主机?它应该是我朋友的IP地址,对吗?

+0

我们在同一个wifi连接。如果我给了一个错误的IP,我的客户端给出了错误......只有当我给我的朋友的正确IP地址时,它才会连接...但是,我调用的操作不会在他的结尾工作。它转到我的系统上的服务,并为所有属性给出一个空值,理想情况下应该等于我给出的值作为输入。 – CuriousCoder 2011-05-27 17:08:01

回答

0

<add baseAddress=...><services>部分的一部分,而不是客户端。要改变一个WCF 客户所使用的基地址,您需要设置客户端部分地址:

<client> 
    <endpoint address="http://your_friend_ip/address" binding=... contract=..." /> 
</client> 

另请注意,您可能需要在服务的防火墙打开一些端口有请求通过。另一件事,如果你的朋友的服务启用了元数据,那么你可以在你的机器上添加一个服务引用(使用VS添加服务引用或者使用svcutil)指向你的朋友的服务,并且这将创建具有适当端点地址的配置。

+0

感谢您的回复。我们都完全关闭了防火墙。另外,我改变了客户部分的地址,就像你说的那样。所以,我可以从app.config中删除服务部分吗?另外,如何检查我的朋友是否启用了元数据? – CuriousCoder 2011-05-27 17:18:33

+0

如果您只想将该应用程序用作客户端,那么是的,您可以删除部分。您可以通过尝试浏览服务地址来检查是否启用了元数据 - 它应该显示您是否启用了元数据。 – carlosfigueira 2011-05-27 17:20:36

+0

是的,我只想让我的系统只作为客户端。我在app.config中完全删除了服务部分。而且,我的客户端部分只有端点地址作为本地主机。现在,我添加了一个服务参考给我的朋友的服务。当我运行客户端时,它给出了WCF服务主机找不到任何元数据的错误,这可能会导致客户端无法正常工作。我想它的bcoz它检查我的系统中的服务,而不是他的系统 – CuriousCoder 2011-05-27 17:33:44