[英]WCF Async methods failure because of bad network
我是WCF新手。 我很想知道關於異步方法的兩件事:
當我向服務發送請求時,由於某種原因網絡出現故障會發生什么? 我是否會遇到任何類型的異常或類似的東西?
如果網絡在服務嘗試響應請求時出現故障,會發生什么? 結果會丟失嗎?
謝謝您的幫助!
通過TCP(包括HTTP)向WCF發送消息通過三個階段變得粗糙:
如果連接在1.期間丟失,則您的服務將看不到該消息,並且您的客戶端將拋出異常。
如果連接在2.期間丟失, 我認為 (但您可以輕松地模擬,例如使用Thread.Sleep()
)服務操作繼續執行。
如果連接在3.期間丟失,則響應將丟失,但操作將運行。
如果服務沒有響應,將拋出異常。 該程序將收到例外。 你可以使用try ... catch塊來捕獲它。 然后寫入日志文件,如果你想記錄它。
根據我的經驗,大多數第一個連接需要時間來初始化。 有時,如果服務dint響應,我會收到EndpointNotFoundException
或TimeoutException
。
因此,我創建了一種方法來通過將消息“連接”傳遞給服務來初始化連接,如果建立連接,服務將返回一個“連接”消息。 否則,如果它返回異常,我將讓它重試。
我設置重試次數= 5.如果連接仍未建立,它將循環5次。 一旦建立,它將繼續進行下一個過程。
我們無法控制網絡連接,我們無法期待和哪一點,它失敗了哪一部分。 但是我們可以在服務失敗時控制我們的程序。 如果服務失敗,取決於您想要做什么。 也許清理數據,重啟過程或立即停止程序並記錄錯誤進行調查。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.