2011-05-27 60 views
1

我想在兩臺機器之間進行WCF通信,其中一臺將充當服務器,另一臺充當客戶端。我能夠使其在我的系統中工作,但當我嘗試連接到我的朋友的系統時它不起作用。兩臺PC之間的WCF通信不起作用

編輯:一個奇怪的事情現在正在發生。我剛剛通過提供「wcftestclient地址」從命令提示符啓動了wcftestclient。它檢索了我朋友的服務器的元數據。但是,當我調用該操作時,它會給出錯誤「沒有端點在本地主機上偵聽」。它怎麼可能是本地主機?它應該是我朋友的IP地址,對嗎?

+0

我們在同一個wifi連接。如果我給了一個錯誤的IP,我的客戶端給出了錯誤......只有當我給我的朋友的正確IP地址時,它纔會連接...但是,我調用的操作不會在他的結尾工作。它轉到我的系統上的服務,併爲所有屬性給出一個空值,理想情況下應該等於我給出的值作爲輸入。 – CuriousCoder 2011-05-27 17:08:01

回答

0

<add baseAddress=...><services>部分的一部分,而不是客戶端。要改變一個WCF 客戶所使用的基地址,您需要設置客戶端部分地址:

<client> 
    <endpoint address="http://your_friend_ip/address" binding=... contract=..." /> 
</client> 

另請注意,您可能需要在服務的防火牆打開一些端口有請求通過。另一件事,如果你的朋友的服務啓用了元數據,那麼你可以在你的機器上添加一個服務引用(使用VS添加服務引用或者使用svcutil)指向你的朋友的服務,並且這將創建具有適當端點地址的配置。

+0

感謝您的回覆。我們都完全關閉了防火牆。另外,我改變了客戶部分的地址,就像你說的那樣。所以,我可以從app.config中刪除服務部分嗎?另外,如何檢查我的朋友是否啓用了元數據? – CuriousCoder 2011-05-27 17:18:33

+0

如果您只想將該應用程序用作客戶端,那麼是的,您可以刪除部分。您可以通過嘗試瀏覽服務地址來檢查是否啓用了元數據 - 它應該顯示您是否啓用了元數據。 – carlosfigueira 2011-05-27 17:20:36

+0

是的,我只想讓我的系統只作爲客戶端。我在app.config中完全刪除了服務部分。而且,我的客戶端部分只有端點地址作爲本地主機。現在,我添加了一個服務參考給我的朋友的服務。當我運行客戶端時,它給出了WCF服務主機找不到任何元數據的錯誤,這可能會導致客戶端無法正常工作。我想它的bcoz它檢查我的系統中的服務,而不是他的系統 – CuriousCoder 2011-05-27 17:33:44