日期:2014-05-20  浏览次数:21017 次

WCF nettcp问题
我创建一个WCF service,baseaddress="net.tcp 192.168.1.5: 4000",并安装到了另外一台服务器上,在本地创建一个应用,通过添加service reference,在wcf service客户端输入net.tcp 地址可以查看到服务暴露的所有操作/方法。然后点击确认。在客户端的app.config 里面可以看到address="net.tcp 192.168.1.5: 4000". 然后在客户端应用程序中写程序调用远程的windows服务。
接下来就会有问题:
如果客户端的app.config保留默认的address="net.tcp 192.168.1.5: 4000",然后尝试去测试调用远程服务,就会报错,不能访问远程服务。如果把address="net.tcp 192.168.1.5: 4000"中ip改成localhost,则调用成功。

服务器的防火墙也是关闭的。请大侠帮忙分析什么原因,搞了很久都搞不明白。

谢谢!

------解决方案--------------------
应该是防火墙的问题~ 4000端口被禁止
------解决方案--------------------
既然是WCF服务,最好是不带端口号,你可以在调用WCF服务的配置文件中修改。

而且WCF服务的IP地址最终是发布的那台机器的实际IP地址。
------解决方案--------------------
需要跨域访问策略文件
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="*">
        <domain uri="*" />
      </allow-from>
      <grant-to>
        <socket-resource port="4502-4534" protocol="tcp" />
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>
------解决方案--------------------
你先 ping 一下吧。另外可能和dns有关系,你把ip改为服务器的机器名试试。