2010-08-12 94 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,這很可能會打開。