2013-04-28 64 views
1

我可以使用Proxy.Open()作爲連接是否工作的指示嗎? 我想檢查一個連接是否可用,然後,如果沒有,我將不會在應用程序運行期間對服務進行任何調用。如何檢查WCF服務是否可用?

注:我只需要檢查連接性,不一定和整個客戶服務往返。

I建議按照建議在服務中創建Ping()方法。僅僅使用Open()就行不通 - Open()不會引發任何異常,即使服務處於脫機狀態!

+0

我總是在我的服務中添加一個無所事事的方法Ping,並在進行任何實際的通信之前調用該方法。不過,我很想知道是否有內置的選擇。 – dasblinkenlight 2013-04-28 10:18:46

+1

這可以告訴你,如果你現在可以打開連接** - 但是5毫秒後,你的實際呼叫仍然會失敗。試圖*檢查這一點真的沒有意義 - 你不會從中獲得任何有用的信息。你只是**必須爲任何WCF調用失敗做好準備 - 並對其進行適當處理 – 2013-04-28 10:33:14

回答

2

鑑於有太多影響WCF服務調用成功的變量,我傾向於在服務中添加一個虛擬的void KnockKnock())方法,以便在連接有效時提供真實的證據。

此方法也可以用於雙重目的:您可以將其稱爲異步通知服務器,他必須爲傳入請求做好準備。 (只是服務的初始啓動可能需要一些時間。)通過調用KnockKnock()方法,服務器可以開始加載服務併爲您的客戶提供更好的初始響應性能。

+0

謝謝,請參閱我的補充說明,您是否認爲Open()可用於簡單的連接檢查? – 2013-04-28 10:37:53

+1

它會打開一個網絡連接到您的服務器 - 成功後將State屬性設置爲「Opened」。這樣您可以檢查當前的網絡連接,但不能保證該服務將運行。 (因爲Open()不會初始化服務。) - >我會簡單地去做一個虛擬方法。 – IsNull 2013-04-28 11:05:42

相關問題