1. 程式人生 > >區域網跨機訪問WCF服務出錯本機訪問正常的問題

區域網跨機訪問WCF服務出錯本機訪問正常的問題

        最近在使用WCF服務進行通訊,初學遇到的第一個問題就是不能進行跨機通訊,當然本機上可以,只要按照步驟進行配置。我已經按照書上網路上各路大神 所說的,進行了各種花樣配置,嘗試了各種花樣寄宿方法,可以依然不能進行跨機訪問WCF服務。經過幾天的探索明白了關鍵點。

1. 首先確保兩個機器能夠Ping通,這是通訊的基本條件。

2. 確定擁有WCF服務的電腦,已經關閉了防火牆(電腦自帶),360安全衛士等能夠過濾IP和遮蔽埠號的軟體。 很多配置正確且處於同一網段的電腦不能訪問WCF服務,就是應為沒有關閉防火牆所以導致了 "沒有終結點在偵聽 'xxx.xxx.xx.xxx:xxxx/asdf/mex' 這可能是由於SOAP地址不正確或者錯誤的服務引起的"

        以下我寫出了一個伺服器端最簡單的配置。而客戶端直接新增服務引用就可以自動給你配置好。

伺服器端:   寄宿在一個控制檯應用程式上。

  1.         <configuration>
  2.     <system.serviceModel>
  3.         <behaviors>
  4.             <serviceBehaviors>
  5.                 <behaviorname="NewBehavior0">

              //這裡要用地址的形式,別用機器名localhost, dellpc 什麼的.

  1.                 </
    behavior>
  2.             </serviceBehaviors>
  3.         </behaviors>
  4.     <bindings>
  5.           <netTcpBinding>
  6.                 <binding name="noSecurity">
  7.                 <security  mode="Node" />

 //初學者建議 使用無安全堅持的模式啊 別整那麼複雜的不然 客戶端報什麼通道中斷錯誤又得急半死。在客戶端的配置裡面最好也加上這樣程式碼,去掉安全檢查。

  1.                 </binding>
  2.            </netTcpBinding>
  3.     </bindings>
  4.         <services>
  5.             <servicebehaviorConfiguration="NewBehavior0"name="WcfService1.Service1">
  6.                 <endpointaddress="net.tcp://10.162.35.220:8585/Service1"binding="netTcpBinding"
  7.                     bindingConfiguration="noSecurity"name="ep1"contract="WcfService1.IService1"/>
  8.             </service>
  9.         </services>
  10.     </system.serviceModel>
  11. </configuration>

        其他多餘的配置也都可以不要。執行你可控制檯程式,架起你的WCF服務。然後你就可以在自己電腦和區域網內 別的電腦的瀏覽器上輸入網址http://10.162.35.220:8585/Service1/mex 就可以訪問到你契約轉換成wsdl的頁面。如果瀏覽器能夠訪問,則客戶端新增服務引用就不會出現錯誤。然後就可以在客戶端愉快的利用 別的電腦上WCF服務程式設計了。

               祝各位WCF初學者從此踏上程式設計坦途。