2009-12-01 20 views
0

我在.NET 4.0中使用ws-discovery,它運行良好。我有一個問題是如何處理無法正常工作的服務。例如,假設我在服務器A和服務器B上有IService。假設服務器A上的這個服務已經中斷(通過停止應用程序池來模擬這一點)。您的客戶仍然會找到2項服務,因此當您嘗試使用該服務時,您無法保證它是正常工作的服務。.net 4 ws-discovery endpoints

所以我的問題是,你是通過循環處理端點來處理這個問題的,如果第一個失敗了,就嘗試下一個端點。或者有沒有辦法只檢索搜索時「啓動」的服務?還是我錯過了點某處 - 很可能:-)

感謝

+0

你問客戶當它只發現一些它需要的服務時會發生什麼?或者,您是否有多個具有相同接口的服務? – 2010-06-14 17:45:38

回答

0

我發現這是WCF發現一個共同的問題。服務器坐在兩個網絡上時也會出現類似的問題。該發現將返回兩個nic地址,但當然,客戶端只能通過其中一個網絡訪問服務器。

我一直在使用的解決方法是向服務器添加一個「void Ping()」函數。然後在發現之後,客戶端嘗試在所有發現的端點上調用此「Ping()」函數。返回響應的是好的,其他的則不好。

我結束了這一步,併產生了一個線程,這個線程偶爾會繼續調用這個「Ping()」函數。然後,當一個好的服務器消失時,該線程將從該「好」uris集合中移除該uri。

我感覺到你的痛苦。