2013-08-02 117 views
4

我有一個本地運行的WCF服務。該服務具有運行的默認端口,但如果該端口已被使用,則我將動態分配端口。檢查WCF服務是否正在運行的最快方法

我在主機中添加這使它發現:

serviceHost.Description.Behaviors.Add(new ServiceDiscoveryBehavior()); 
serviceHost.AddServiceEndpoint(new UdpDiscoveryEndpoint()); 

現在我的客戶端需要連接到這臺主機。在客戶端中,我想首先嚐試使用默認端口,如果它無法連接到默認端口上的服務,則會執行發現。

我發現發現需要大約20-30秒,所以我寧願避免總是這樣做,只有當它在默認端口上找不到主機時。

所以我的問題是:什麼是最快的方式來確定我的主機是否在默認端口?

我在考慮將客戶端的開放超時設置爲10秒,然後在打開時嘗試/捕獲,但仍需要等待10秒。

回答

5

因此,如果您的端點不正確,撥打client.Open();將不會拋出任何異常。

我在我的服務中添加了一個名爲IsAlive()的方法,它只是返回true。所以打開後我打電話client.IsAlive();,如果端點不正確,幾乎立即會有異常。

+0

是的,如果服務器端點不正確,它會拋出異常。 – superachu

4

實際上,您只需導航到瀏覽器中的網址即可顯示網絡服務是否正在運行。因此,如果WCF URL是

http://YourService:8000/YourClass/YourMethod 

,即到瀏覽器的地址欄,如果該服務正在運行應該表現出你的WSDL頁打字,一個404錯誤,如果沒有。

我的WCF服務是自託管的,所以我會添加,那就是,我的WCF服務啓動時,我使用這行代碼輸出到一個DOS窗口我服務的當前網址是什麼:

Console.WriteLine("HostInterface running on http://" & Domain & ":" & Port & "/Service/Endpoint") 
+0

假設運輸是http。 –

相關問題