2016-03-07 68 views
-2

我搜索了一下,如何知道WCF服務是否關閉或者不知道,我才知道知道這一點的唯一方法是調用WCF服務方法。我們可以創建一個只返回true的方法。 在我的情況下,我想顯示一個消息,當服務是關閉的客戶端和WCF服務的其他例外,我想顯示例外情況。最好的辦法是什麼?當WCF服務關閉時顯示消息

+0

圍繞您的wcf服務調用使用try/catch塊。並在catch塊顯示由web服務調用引發的異常?你不是在尋找比它更復雜的東西嗎? – Sidewinder94

+1

其實你甚至不需要返回'true'。讓它成爲'空白'。如果任何部分失敗,服務將自然發生故障 – MickyD

回答

1

這個問題只能解決「客戶端」,因爲服務器只有在WCF服務運行並且配置良好的情況下才能回答「真」。

所有其他情況應該從客戶端進行管理。

用一種簡單的方法,你可以調用這個簡單的服務,如果它回覆它似乎一切正常,否則你會得到一個faultexception或你需要捕捉的異常。

注意異步/等待,您需要在距離網絡通話較近的地方捕獲異常,否則您將得到未捕獲的應用程序異常,從而導致應用程序域崩潰。

+0

按照我的理解,OP的問題更像是:如何顯示異常。 – Sidewinder94

+0

@ Sidewinder94 WCF中的「Destination unreachable」有特定的例外,因此根據異常詳細信息的類型,客戶端應該對發生的事情有個很好的概念。我知道我的東西沒有 – MickyD

+0

@MickyD對不起,如果你誤解了我,對我來說,OP的問題很明顯,他希望拋出異常並在客戶端顯示。 – Sidewinder94

0

如果服務是你的,那麼繼續並使用返回true的方法。

但是,您應該繼續並使用該服務,因爲它不一定會保持您使用它的整個時間。適度地處理所有操作的臨時超時和錯誤,並相應地顯示消息。

您可以做的一件客戶端事情是發送一個WebRequest並查看它是否返回HttpStatusCode.OK但它不能保證該服務不會失敗或正在運行。

在使用服務期間,您可能會看到FaultException,代理和通道狀態錯誤,無效配置(綁定等)和CommunicationException對象。

您可以在此閱讀更多關於MSDN

從那裏:當網絡不可用發生

通信錯誤,客戶端使用了不正確的地址或服務主機未偵聽傳入的消息。這種類型的錯誤以CommunicationException或CommunicationException派生類的形式返回給客戶端。執行服務操作期間發生應用程序錯誤。這種錯誤以FaultException或FaultException的形式發送給客戶端。

相關問題