2011-02-23 66 views
1

我有一個包含兩個客戶端服務的解決方案。他們可以相互溝通,發送消息,並引發事件。 當我用一臺機器進行測試時,它們工作得很好,但是我將它們安裝在不同的機器上,互聯網已連接,並且它們互相找不到。由於我自己託管我的服務,這可能是原因嗎?我使用DuallHttpBinding作爲綁定配置。 我的情況是一個具有兩個客戶端實例和一個服務的聊天應用程序,其中每個服務器運行在不同的機器上,而不具有除因特網連接之外的任何網絡連接。在不同的機器上測試WCF聊天應用程序

+0

網絡是一個複雜的問題。可能有幾個原因:未連接到服務器,端口被阻塞(客戶端或服務器),設計不正確等; – 2011-02-23 16:12:34

+0

你能描述一下你當前的綁定配置嗎? – 2011-02-23 16:19:28

+0

你能更具體嗎?我的意思是我們需要指定某種配置,以便在設計時發生這種情況,或者WCF應該能夠自動執行此操作? – 2011-02-23 16:22:22

回答

0

DualHttpBinding要求兩個客戶端能夠打開連接並向對方發送消息。最有可能的客戶端之一是無法接受傳入連接的防火牆,沒有端口轉發的NAT路由器,或者其他客戶端根本找不到正確的地址。

通過HTTP進行的這種直接雙向通信很難在您進入互聯網後立即獲得。要調試它,我建議看看Fiddler這是一個很好的HTTP調試工具。你必須觀察連接,看看客戶端是否可以連接,如果沒有連接,爲什麼連接失敗。那麼你將不得不解決導致這個問題的連接問題。

我不確定它是否適用於您,但它會顯着減少錯誤,將net.tcp用作綁定,並將服務器放置在所有客戶端都可以連接到的位置(如net.tcp doesn' t要求服務器能夠打開一個端口回到客戶端,它可以使用現有的連接發送)。它只需要客戶端能夠連接到服務器,而不是服務器需要能夠創建第二個連接返回到客戶端,從而通過標準NAT配置工作。

+0

謝謝。使用NetTcp綁定服務的客戶端是否有可能不在物理網絡中,只能使用互聯網作爲連接平臺?因爲我的客戶是不同國家的客戶 – 2011-02-23 16:31:12

+0

是的,只要他們可以在互聯網上看到對方。你需要一端有一個互聯網客戶端可以連接的開放端口,但另一個客戶端可以在NAT路由器後面,它仍然可以工作。這與配置Web服務器基本相同。 :) – Tridus 2011-02-23 16:53:29