2010-08-12 93 views
0

我在WINDOWS 7操作系统上托管了我的WCF windows服务,并在windows-XP PC上安装了客户端应用程序。 WIN-7防火墙阻止我的XP客户端应用程序,当我在Win-7上禁用防火墙时,客户端应用程序运行良好。我怎样才能克服这个问题。我正在使用安全模式=“无”所有基于LAN的客户端应用程序。阻止wcf lan客户端的防火墙

客户端配置文件

<system.serviceModel> 
    <bindings> 
     <netNamedPipeBinding> 
      <binding name="NetNamedPipeBinding_IDataService" > 
       <security mode="Transport"> 
        <transport protectionLevel="EncryptAndSign" /> 
       </security> 
      </binding> 
     </netNamedPipeBinding> 
     <netTcpBinding> 
      <binding name="NetTcpBinding_IDataService"> 
       <security mode="None">       
       </security> 
      </binding> 
     </netTcpBinding> 
    </bindings> 
    <client> 
     <endpoint address="net.tcp://localhost:8523/DataServices" binding="netTcpBinding" 
      bindingConfiguration="NetTcpBinding_IDataService" contract="DataServiceReference.IDataService" 
      name="NetTcpBinding_IDataService" /> 
     <endpoint address="net.pipe://localhost/" binding="netNamedPipeBinding" 
      bindingConfiguration="NetNamedPipeBinding_IDataService" contract="DataServiceReference.IDataService" 
      name="NetNamedPipeBinding_IDataService">     
     </endpoint> 
    </client> 
</system.serviceModel> 

回答

0

您可以通过禁用防火墙解决这个问题。 WCF配置中没有任何东西可以绕过主机上的防火墙。如果你绑定的端口被阻塞,那么没有数据会到达终点。

1

或者,您可以添加/启用Windows防火墙的Windows通讯基础的net.tcp侦听器适配器(TCP-In)的入站规则与高级安全

1

你并不需要禁用防火墙。你的配置在这里定义了2个端点。虽然net.tcp将被防火墙阻止,但net.pipe不会受到影响。所以只需在客户端使用NetNamedPipeBinding_IDataService端点。

如果由于某种原因,这不起作用或客户端不在同一个域(net.pipe的范围),你可以使用wsHttpBinding或者更简单的basicHttpBinding。这将使用通过端口80的Http,如果您的服务器安装了IIS,这很可能会打开。